<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-stable.git/drivers/usb/dwc3, branch linux-3.18.y</title>
<subtitle>Linux kernel stable tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/'/>
<entry>
<title>usb: dwc3: gadget: Fix the uninitialized link_state when udc starts</title>
<updated>2019-03-23T07:18:53+00:00</updated>
<author>
<name>Zeng Tao</name>
<email>prime.zeng@hisilicon.com</email>
</author>
<published>2018-12-26T11:22:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=def42cb2eae3786d9d68f809b7919e11f42619b5'/>
<id>def42cb2eae3786d9d68f809b7919e11f42619b5</id>
<content type='text'>
[ Upstream commit 88b1bb1f3b88e0bf20b05d543a53a5b99bd7ceb6 ]

Currently the link_state is uninitialized and the default value is 0(U0)
before the first time we start the udc, and after we start the udc then
 stop the udc, the link_state will be undefined.
We may have the following warnings if we start the udc again with
an undefined link_state:

WARNING: CPU: 0 PID: 327 at drivers/usb/dwc3/gadget.c:294 dwc3_send_gadget_ep_cmd+0x304/0x308
dwc3 100e0000.hidwc3_0: wakeup failed --&gt; -22
[...]
Call Trace:
[&lt;c010f270&gt;] (unwind_backtrace) from [&lt;c010b3d8&gt;] (show_stack+0x10/0x14)
[&lt;c010b3d8&gt;] (show_stack) from [&lt;c034a4dc&gt;] (dump_stack+0x84/0x98)
[&lt;c034a4dc&gt;] (dump_stack) from [&lt;c0118000&gt;] (__warn+0xe8/0x100)
[&lt;c0118000&gt;] (__warn) from [&lt;c0118050&gt;](warn_slowpath_fmt+0x38/0x48)
[&lt;c0118050&gt;] (warn_slowpath_fmt) from [&lt;c0442ec0&gt;](dwc3_send_gadget_ep_cmd+0x304/0x308)
[&lt;c0442ec0&gt;] (dwc3_send_gadget_ep_cmd) from [&lt;c0445e68&gt;](dwc3_ep0_start_trans+0x48/0xf4)
[&lt;c0445e68&gt;] (dwc3_ep0_start_trans) from [&lt;c0446750&gt;](dwc3_ep0_out_start+0x64/0x80)
[&lt;c0446750&gt;] (dwc3_ep0_out_start) from [&lt;c04451c0&gt;](__dwc3_gadget_start+0x1e0/0x278)
[&lt;c04451c0&gt;] (__dwc3_gadget_start) from [&lt;c04452e0&gt;](dwc3_gadget_start+0x88/0x10c)
[&lt;c04452e0&gt;] (dwc3_gadget_start) from [&lt;c045ee54&gt;](udc_bind_to_driver+0x88/0xbc)
[&lt;c045ee54&gt;] (udc_bind_to_driver) from [&lt;c045f29c&gt;](usb_gadget_probe_driver+0xf8/0x140)
[&lt;c045f29c&gt;] (usb_gadget_probe_driver) from [&lt;bf005424&gt;](gadget_dev_desc_UDC_store+0xac/0xc4 [libcomposite])
[&lt;bf005424&gt;] (gadget_dev_desc_UDC_store [libcomposite]) from[&lt;c023d8e0&gt;] (configfs_write_file+0xd4/0x160)
[&lt;c023d8e0&gt;] (configfs_write_file) from [&lt;c01d51e8&gt;] (__vfs_write+0x1c/0x114)
[&lt;c01d51e8&gt;] (__vfs_write) from [&lt;c01d5ff4&gt;] (vfs_write+0xa4/0x168)
[&lt;c01d5ff4&gt;] (vfs_write) from [&lt;c01d6d40&gt;] (SyS_write+0x3c/0x90)
[&lt;c01d6d40&gt;] (SyS_write) from [&lt;c0107400&gt;] (ret_fast_syscall+0x0/0x3c)

Signed-off-by: Zeng Tao &lt;prime.zeng@hisilicon.com&gt;
Signed-off-by: Felipe Balbi &lt;felipe.balbi@linux.intel.com&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit 88b1bb1f3b88e0bf20b05d543a53a5b99bd7ceb6 ]

Currently the link_state is uninitialized and the default value is 0(U0)
before the first time we start the udc, and after we start the udc then
 stop the udc, the link_state will be undefined.
We may have the following warnings if we start the udc again with
an undefined link_state:

WARNING: CPU: 0 PID: 327 at drivers/usb/dwc3/gadget.c:294 dwc3_send_gadget_ep_cmd+0x304/0x308
dwc3 100e0000.hidwc3_0: wakeup failed --&gt; -22
[...]
Call Trace:
[&lt;c010f270&gt;] (unwind_backtrace) from [&lt;c010b3d8&gt;] (show_stack+0x10/0x14)
[&lt;c010b3d8&gt;] (show_stack) from [&lt;c034a4dc&gt;] (dump_stack+0x84/0x98)
[&lt;c034a4dc&gt;] (dump_stack) from [&lt;c0118000&gt;] (__warn+0xe8/0x100)
[&lt;c0118000&gt;] (__warn) from [&lt;c0118050&gt;](warn_slowpath_fmt+0x38/0x48)
[&lt;c0118050&gt;] (warn_slowpath_fmt) from [&lt;c0442ec0&gt;](dwc3_send_gadget_ep_cmd+0x304/0x308)
[&lt;c0442ec0&gt;] (dwc3_send_gadget_ep_cmd) from [&lt;c0445e68&gt;](dwc3_ep0_start_trans+0x48/0xf4)
[&lt;c0445e68&gt;] (dwc3_ep0_start_trans) from [&lt;c0446750&gt;](dwc3_ep0_out_start+0x64/0x80)
[&lt;c0446750&gt;] (dwc3_ep0_out_start) from [&lt;c04451c0&gt;](__dwc3_gadget_start+0x1e0/0x278)
[&lt;c04451c0&gt;] (__dwc3_gadget_start) from [&lt;c04452e0&gt;](dwc3_gadget_start+0x88/0x10c)
[&lt;c04452e0&gt;] (dwc3_gadget_start) from [&lt;c045ee54&gt;](udc_bind_to_driver+0x88/0xbc)
[&lt;c045ee54&gt;] (udc_bind_to_driver) from [&lt;c045f29c&gt;](usb_gadget_probe_driver+0xf8/0x140)
[&lt;c045f29c&gt;] (usb_gadget_probe_driver) from [&lt;bf005424&gt;](gadget_dev_desc_UDC_store+0xac/0xc4 [libcomposite])
[&lt;bf005424&gt;] (gadget_dev_desc_UDC_store [libcomposite]) from[&lt;c023d8e0&gt;] (configfs_write_file+0xd4/0x160)
[&lt;c023d8e0&gt;] (configfs_write_file) from [&lt;c01d51e8&gt;] (__vfs_write+0x1c/0x114)
[&lt;c01d51e8&gt;] (__vfs_write) from [&lt;c01d5ff4&gt;] (vfs_write+0xa4/0x168)
[&lt;c01d5ff4&gt;] (vfs_write) from [&lt;c01d6d40&gt;] (SyS_write+0x3c/0x90)
[&lt;c01d6d40&gt;] (SyS_write) from [&lt;c0107400&gt;] (ret_fast_syscall+0x0/0x3c)

Signed-off-by: Zeng Tao &lt;prime.zeng@hisilicon.com&gt;
Signed-off-by: Felipe Balbi &lt;felipe.balbi@linux.intel.com&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>usb: dwc3: Update DWC_usb31 GTXFIFOSIZ reg fields</title>
<updated>2018-05-30T05:47:41+00:00</updated>
<author>
<name>Thinh Nguyen</name>
<email>Thinh.Nguyen@synopsys.com</email>
</author>
<published>2018-03-16T22:33:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=f60da70ad94f3be3f40a3c119a0c1c04eaeaf91a'/>
<id>f60da70ad94f3be3f40a3c119a0c1c04eaeaf91a</id>
<content type='text'>
[ Upstream commit 0cab8d26d6e5e053b2bed3356992aaa71dc93628 ]

Update two GTXFIFOSIZ bit fields for the DWC_usb31 controller. TXFDEP
is a 15-bit value instead of 16-bit value, and bit 15 is TXFRAMNUM.

The GTXFIFOSIZ register for DWC_usb31 is as follows:
 +-------+-----------+----------------------------------+
 | BITS  | Name      | Description                      |
 +=======+===========+==================================+
 | 31:16 | TXFSTADDR | Transmit FIFOn RAM Start Address |
 | 15    | TXFRAMNUM | Asynchronous/Periodic TXFIFO     |
 | 14:0  | TXFDEP    | TXFIFO Depth                     |
 +-------+-----------+----------------------------------+

Signed-off-by: Thinh Nguyen &lt;thinhn@synopsys.com&gt;
Signed-off-by: Felipe Balbi &lt;felipe.balbi@linux.intel.com&gt;
Signed-off-by: Sasha Levin &lt;alexander.levin@microsoft.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit 0cab8d26d6e5e053b2bed3356992aaa71dc93628 ]

Update two GTXFIFOSIZ bit fields for the DWC_usb31 controller. TXFDEP
is a 15-bit value instead of 16-bit value, and bit 15 is TXFRAMNUM.

The GTXFIFOSIZ register for DWC_usb31 is as follows:
 +-------+-----------+----------------------------------+
 | BITS  | Name      | Description                      |
 +=======+===========+==================================+
 | 31:16 | TXFSTADDR | Transmit FIFOn RAM Start Address |
 | 15    | TXFRAMNUM | Asynchronous/Periodic TXFIFO     |
 | 14:0  | TXFDEP    | TXFIFO Depth                     |
 +-------+-----------+----------------------------------+

Signed-off-by: Thinh Nguyen &lt;thinhn@synopsys.com&gt;
Signed-off-by: Felipe Balbi &lt;felipe.balbi@linux.intel.com&gt;
Signed-off-by: Sasha Levin &lt;alexander.levin@microsoft.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>usb: dwc3: pci: Properly cleanup resource</title>
<updated>2018-04-24T07:29:25+00:00</updated>
<author>
<name>Thinh Nguyen</name>
<email>Thinh.Nguyen@synopsys.com</email>
</author>
<published>2018-03-19T20:07:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=d0e3d32b59780725de33b6e96a3d17e0859523c3'/>
<id>d0e3d32b59780725de33b6e96a3d17e0859523c3</id>
<content type='text'>
commit cabdf83dadfb3d83eec31e0f0638a92dbd716435 upstream.

Platform device is allocated before adding resources. Make sure to
properly cleanup on error case.

Cc: &lt;stable@vger.kernel.org&gt;
Fixes: f1c7e7108109 ("usb: dwc3: convert to pcim_enable_device()")
Signed-off-by: Thinh Nguyen &lt;thinhn@synopsys.com&gt;
Signed-off-by: Felipe Balbi &lt;felipe.balbi@linux.intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit cabdf83dadfb3d83eec31e0f0638a92dbd716435 upstream.

Platform device is allocated before adding resources. Make sure to
properly cleanup on error case.

Cc: &lt;stable@vger.kernel.org&gt;
Fixes: f1c7e7108109 ("usb: dwc3: convert to pcim_enable_device()")
Signed-off-by: Thinh Nguyen &lt;thinhn@synopsys.com&gt;
Signed-off-by: Felipe Balbi &lt;felipe.balbi@linux.intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>usb: dwc3: keystone: check return value</title>
<updated>2018-04-13T17:52:12+00:00</updated>
<author>
<name>Pan Bian</name>
<email>bianpan2016@163.com</email>
</author>
<published>2017-04-23T05:55:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=7c27acc195bd34521183a386c50748e6ddd42932'/>
<id>7c27acc195bd34521183a386c50748e6ddd42932</id>
<content type='text'>
[ Upstream commit 018047a1dba7636e1f7fdae2cc290a528991d648 ]

Function devm_clk_get() returns an ERR_PTR when it fails. However, in
function kdwc3_probe(), its return value is not checked, which may
result in a bad memory access bug. This patch fixes the bug.

Signed-off-by: Pan Bian &lt;bianpan2016@163.com&gt;
Signed-off-by: Felipe Balbi &lt;felipe.balbi@linux.intel.com&gt;
Signed-off-by: Sasha Levin &lt;alexander.levin@microsoft.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit 018047a1dba7636e1f7fdae2cc290a528991d648 ]

Function devm_clk_get() returns an ERR_PTR when it fails. However, in
function kdwc3_probe(), its return value is not checked, which may
result in a bad memory access bug. This patch fixes the bug.

Signed-off-by: Pan Bian &lt;bianpan2016@163.com&gt;
Signed-off-by: Felipe Balbi &lt;felipe.balbi@linux.intel.com&gt;
Signed-off-by: Sasha Levin &lt;alexander.levin@microsoft.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>usb: dwc3: gadget: Set maxpacket size for ep0 IN</title>
<updated>2018-02-28T09:16:18+00:00</updated>
<author>
<name>Thinh Nguyen</name>
<email>Thinh.Nguyen@synopsys.com</email>
</author>
<published>2018-01-13T02:18:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=0b10a48805f9ac1dd745fc09aecb966dd81e6a08'/>
<id>0b10a48805f9ac1dd745fc09aecb966dd81e6a08</id>
<content type='text'>
commit 6180026341e852a250e1f97ebdcf71684a3c81b9 upstream.

There are 2 control endpoint structures for DWC3. However, the driver
only updates the OUT direction control endpoint structure during
ConnectDone event. DWC3 driver needs to update the endpoint max packet
size for control IN endpoint as well. If the max packet size is not
properly set, then the driver will incorrectly calculate the data
transfer size and fail to send ZLP for HS/FS 3-stage control read
transfer.

The fix is simply to update the max packet size for the ep0 IN direction
during ConnectDone event.

Cc: stable@vger.kernel.org
Fixes: 72246da40f37 ("usb: Introduce DesignWare USB3 DRD Driver")
Signed-off-by: Thinh Nguyen &lt;thinhn@synopsys.com&gt;
Signed-off-by: Felipe Balbi &lt;felipe.balbi@linux.intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 6180026341e852a250e1f97ebdcf71684a3c81b9 upstream.

There are 2 control endpoint structures for DWC3. However, the driver
only updates the OUT direction control endpoint structure during
ConnectDone event. DWC3 driver needs to update the endpoint max packet
size for control IN endpoint as well. If the max packet size is not
properly set, then the driver will incorrectly calculate the data
transfer size and fail to send ZLP for HS/FS 3-stage control read
transfer.

The fix is simply to update the max packet size for the ep0 IN direction
during ConnectDone event.

Cc: stable@vger.kernel.org
Fixes: 72246da40f37 ("usb: Introduce DesignWare USB3 DRD Driver")
Signed-off-by: Thinh Nguyen &lt;thinhn@synopsys.com&gt;
Signed-off-by: Felipe Balbi &lt;felipe.balbi@linux.intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>usb: dwc3: replace %p with %pK</title>
<updated>2017-07-15T08:14:39+00:00</updated>
<author>
<name>Felipe Balbi</name>
<email>felipe.balbi@linux.intel.com</email>
</author>
<published>2017-05-17T12:57:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=05d219d0d58c203a72f46bce92378c51feb1fc67'/>
<id>05d219d0d58c203a72f46bce92378c51feb1fc67</id>
<content type='text'>
commit 04fb365c453e14ff9e8a28f1c46050d920a27a4a upstream.

%p will leak kernel pointers, so let's not expose the information on
dmesg and instead use %pK. %pK will only show the actual addresses if
explicitly enabled under /proc/sys/kernel/kptr_restrict.

Acked-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
Signed-off-by: Felipe Balbi &lt;felipe.balbi@linux.intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 04fb365c453e14ff9e8a28f1c46050d920a27a4a upstream.

%p will leak kernel pointers, so let's not expose the information on
dmesg and instead use %pK. %pK will only show the actual addresses if
explicitly enabled under /proc/sys/kernel/kptr_restrict.

Acked-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
Signed-off-by: Felipe Balbi &lt;felipe.balbi@linux.intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>usb: dwc3: gadget: make Set Endpoint Configuration macros safe</title>
<updated>2017-04-18T05:55:50+00:00</updated>
<author>
<name>Felipe Balbi</name>
<email>felipe.balbi@linux.intel.com</email>
</author>
<published>2017-01-31T11:24:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=24c0c8cce67fe572a8da7d9e2a805346e876cd32'/>
<id>24c0c8cce67fe572a8da7d9e2a805346e876cd32</id>
<content type='text'>
commit 7369090a9fb57c3fc705ce355d2e4523a5a24716 upstream.

Some gadget drivers are bad, bad boys. We notice
that ADB was passing bad Burst Size which caused top
bits of param0 to be overwritten which confused DWC3
when running this command.

In order to avoid future issues, we're going to make
sure values passed by macros are always safe for the
controller. Note that ADB still needs a fix to *not*
pass bad values.

Reported-by: Mohamed Abbas &lt;mohamed.abbas@intel.com&gt;
Sugested-by: Adam Andruszak &lt;adam.andruszak@intel.com&gt;
Signed-off-by: Felipe Balbi &lt;felipe.balbi@linux.intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 7369090a9fb57c3fc705ce355d2e4523a5a24716 upstream.

Some gadget drivers are bad, bad boys. We notice
that ADB was passing bad Burst Size which caused top
bits of param0 to be overwritten which confused DWC3
when running this command.

In order to avoid future issues, we're going to make
sure values passed by macros are always safe for the
controller. Note that ADB still needs a fix to *not*
pass bad values.

Reported-by: Mohamed Abbas &lt;mohamed.abbas@intel.com&gt;
Sugested-by: Adam Andruszak &lt;adam.andruszak@intel.com&gt;
Signed-off-by: Felipe Balbi &lt;felipe.balbi@linux.intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>usb: dwc3: gadget: always cleanup all TRBs</title>
<updated>2016-08-31T23:32:14+00:00</updated>
<author>
<name>Felipe Balbi</name>
<email>felipe.balbi@linux.intel.com</email>
</author>
<published>2016-08-10T09:35:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=1bc6efe066926ad0f3e76d3bd109162cac3f0c3e'/>
<id>1bc6efe066926ad0f3e76d3bd109162cac3f0c3e</id>
<content type='text'>
[ Upstream commit 7c705dfe2ebe731c8fd068623b6b4df2d3512c08 ]

If we stop earlier due to short packet, we will
not be able to giveback all TRBs.

Cc: &lt;stable@vger.kernel.org&gt;
Cc: Brian E Rogers &lt;brian.e.rogers@intel.com&gt;
Signed-off-by: Felipe Balbi &lt;felipe.balbi@linux.intel.com&gt;
Signed-off-by: Sasha Levin &lt;alexander.levin@verizon.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit 7c705dfe2ebe731c8fd068623b6b4df2d3512c08 ]

If we stop earlier due to short packet, we will
not be able to giveback all TRBs.

Cc: &lt;stable@vger.kernel.org&gt;
Cc: Brian E Rogers &lt;brian.e.rogers@intel.com&gt;
Signed-off-by: Felipe Balbi &lt;felipe.balbi@linux.intel.com&gt;
Signed-off-by: Sasha Levin &lt;alexander.levin@verizon.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>usb: dwc3: gadget: fix for short pkts during chained xfers</title>
<updated>2016-08-31T23:32:09+00:00</updated>
<author>
<name>Felipe Balbi</name>
<email>felipe.balbi@linux.intel.com</email>
</author>
<published>2016-08-10T08:13:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=de72ed191825536e27049f353526d7977f4995dc'/>
<id>de72ed191825536e27049f353526d7977f4995dc</id>
<content type='text'>
[ Upstream commit e5b36ae2f851024d43c76e51f395d32ce8d769ce ]

DWC3 has one interesting peculiarity with chained
transfers. If we setup N chained transfers and we
get a short packet before processing all N TRBs,
DWC3 will (conditionally) issue a XferComplete or
XferInProgress event and retire all TRBs from the
one which got a short packet to the last without
clearing their HWO bits.

This means SW must clear HWO bit manually, which
this patch is doing.

Cc: &lt;stable@vger.kernel.org&gt;
Cc: Brian E Rogers &lt;brian.e.rogers@intel.com&gt;
Signed-off-by: Felipe Balbi &lt;felipe.balbi@linux.intel.com&gt;
Signed-off-by: Sasha Levin &lt;alexander.levin@verizon.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit e5b36ae2f851024d43c76e51f395d32ce8d769ce ]

DWC3 has one interesting peculiarity with chained
transfers. If we setup N chained transfers and we
get a short packet before processing all N TRBs,
DWC3 will (conditionally) issue a XferComplete or
XferInProgress event and retire all TRBs from the
one which got a short packet to the last without
clearing their HWO bits.

This means SW must clear HWO bit manually, which
this patch is doing.

Cc: &lt;stable@vger.kernel.org&gt;
Cc: Brian E Rogers &lt;brian.e.rogers@intel.com&gt;
Signed-off-by: Felipe Balbi &lt;felipe.balbi@linux.intel.com&gt;
Signed-off-by: Sasha Levin &lt;alexander.levin@verizon.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>usb: dwc3: gadget: increment request-&gt;actual once</title>
<updated>2016-08-31T23:32:04+00:00</updated>
<author>
<name>Felipe Balbi</name>
<email>felipe.balbi@linux.intel.com</email>
</author>
<published>2016-07-29T00:17:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=9bf46c6c417470a5072e2529c634a80ff2e9a890'/>
<id>9bf46c6c417470a5072e2529c634a80ff2e9a890</id>
<content type='text'>
[ Upstream commit c7de573471832dff7d31f0c13b0f143d6f017799 ]

When using SG lists, we would end up setting
request-&gt;actual to:

	num_mapped_sgs * (request-&gt;length - count)

Let's fix that up by incrementing request-&gt;actual
only once.

Cc: &lt;stable@vger.kernel.org&gt;
Reported-by: Brian E Rogers &lt;brian.e.rogers@intel.com&gt;
Signed-off-by: Felipe Balbi &lt;felipe.balbi@linux.intel.com&gt;
Signed-off-by: Sasha Levin &lt;alexander.levin@verizon.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit c7de573471832dff7d31f0c13b0f143d6f017799 ]

When using SG lists, we would end up setting
request-&gt;actual to:

	num_mapped_sgs * (request-&gt;length - count)

Let's fix that up by incrementing request-&gt;actual
only once.

Cc: &lt;stable@vger.kernel.org&gt;
Reported-by: Brian E Rogers &lt;brian.e.rogers@intel.com&gt;
Signed-off-by: Felipe Balbi &lt;felipe.balbi@linux.intel.com&gt;
Signed-off-by: Sasha Levin &lt;alexander.levin@verizon.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
