<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-stable.git/drivers/usb, branch v3.14.34</title>
<subtitle>Linux kernel stable tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/'/>
<entry>
<title>usb: musb: stuff leak of struct usb_hcd</title>
<updated>2015-01-27T16:18:57+00:00</updated>
<author>
<name>Sebastian Andrzej Siewior</name>
<email>bigeasy@linutronix.de</email>
</author>
<published>2014-12-11T17:14:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=97ab28073bcc3299080bbaba025861d053e70f43'/>
<id>97ab28073bcc3299080bbaba025861d053e70f43</id>
<content type='text'>
commit 68693b8ea4e284c46bff919ac62bd9ccdfdbb6ba upstream.

since the split of host+gadget mode in commit 74c2e9360058 ("usb: musb:
factor out hcd initalization") we leak the usb_hcd struct. We call now
musb_host_cleanup() which does basically usb_remove_hcd() and also sets
the hcd variable to NULL. Doing so makes the finall call to
musb_host_free() basically a nop and the usb_hcd remains around for ever
without anowner.
This patch drops that NULL assignment for that reason.

Fixes: 74c2e9360058 ("usb: musb: factor out hcd initalization")
Cc: Daniel Mack &lt;zonque@gmail.com&gt;
Signed-off-by: Sebastian Andrzej Siewior &lt;bigeasy@linutronix.de&gt;
Signed-off-by: Felipe Balbi &lt;balbi@ti.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 68693b8ea4e284c46bff919ac62bd9ccdfdbb6ba upstream.

since the split of host+gadget mode in commit 74c2e9360058 ("usb: musb:
factor out hcd initalization") we leak the usb_hcd struct. We call now
musb_host_cleanup() which does basically usb_remove_hcd() and also sets
the hcd variable to NULL. Doing so makes the finall call to
musb_host_free() basically a nop and the usb_hcd remains around for ever
without anowner.
This patch drops that NULL assignment for that reason.

Fixes: 74c2e9360058 ("usb: musb: factor out hcd initalization")
Cc: Daniel Mack &lt;zonque@gmail.com&gt;
Signed-off-by: Sebastian Andrzej Siewior &lt;bigeasy@linutronix.de&gt;
Signed-off-by: Felipe Balbi &lt;balbi@ti.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>USB: EHCI: fix initialization bug in iso_stream_schedule()</title>
<updated>2015-01-27T16:18:57+00:00</updated>
<author>
<name>Alan Stern</name>
<email>stern@rowland.harvard.edu</email>
</author>
<published>2014-12-04T15:21:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=727cc57106e72d38ad5d3f0aefb374ef0091f144'/>
<id>727cc57106e72d38ad5d3f0aefb374ef0091f144</id>
<content type='text'>
commit 6d89252a998a695ecb0348fc2d717dc33d90cae9 upstream.

Commit c3ee9b76aa93 (EHCI: improved logic for isochronous scheduling)
introduced the idea of using ehci-&gt;last_iso_frame as the origin (or
base) for the circular calculations involved in modifying the
isochronous schedule.  However, the new code it added used
ehci-&gt;last_iso_frame before the value was properly initialized.  This
patch rectifies the mistake by moving the initialization lines earlier
in iso_stream_schedule().

This fixes Bugzilla #72891.

Signed-off-by: Alan Stern &lt;stern@rowland.harvard.edu&gt;
Fixes: c3ee9b76aa93
Reported-by: Joe Bryant &lt;tenminjoe@yahoo.com&gt;
Tested-by: Joe Bryant &lt;tenminjoe@yahoo.com&gt;
Tested-by: Martin Long &lt;martin@longhome.co.uk&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 6d89252a998a695ecb0348fc2d717dc33d90cae9 upstream.

Commit c3ee9b76aa93 (EHCI: improved logic for isochronous scheduling)
introduced the idea of using ehci-&gt;last_iso_frame as the origin (or
base) for the circular calculations involved in modifying the
isochronous schedule.  However, the new code it added used
ehci-&gt;last_iso_frame before the value was properly initialized.  This
patch rectifies the mistake by moving the initialization lines earlier
in iso_stream_schedule().

This fixes Bugzilla #72891.

Signed-off-by: Alan Stern &lt;stern@rowland.harvard.edu&gt;
Fixes: c3ee9b76aa93
Reported-by: Joe Bryant &lt;tenminjoe@yahoo.com&gt;
Tested-by: Joe Bryant &lt;tenminjoe@yahoo.com&gt;
Tested-by: Martin Long &lt;martin@longhome.co.uk&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>USB: console: fix potential use after free</title>
<updated>2015-01-27T16:18:57+00:00</updated>
<author>
<name>Johan Hovold</name>
<email>johan@kernel.org</email>
</author>
<published>2015-01-05T15:04:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=23c631c3dbe28d5f89e70c4da7b4313177a4dc40'/>
<id>23c631c3dbe28d5f89e70c4da7b4313177a4dc40</id>
<content type='text'>
commit 32a4bf2e81ec378e5925d4e069e0677a6c86a6ad upstream.

Use tty kref to release the fake tty in usb_console_setup to avoid use
after free if the underlying serial driver has acquired a reference.

Note that using the tty destructor release_one_tty requires some more
state to be initialised.

Fixes: 4a90f09b20f4 ("tty: usb-serial krefs")
Signed-off-by: Johan Hovold &lt;johan@kernel.org&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 32a4bf2e81ec378e5925d4e069e0677a6c86a6ad upstream.

Use tty kref to release the fake tty in usb_console_setup to avoid use
after free if the underlying serial driver has acquired a reference.

Note that using the tty destructor release_one_tty requires some more
state to be initialised.

Fixes: 4a90f09b20f4 ("tty: usb-serial krefs")
Signed-off-by: Johan Hovold &lt;johan@kernel.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>USB: console: fix uninitialised ldisc semaphore</title>
<updated>2015-01-27T16:18:57+00:00</updated>
<author>
<name>Johan Hovold</name>
<email>johan@kernel.org</email>
</author>
<published>2015-01-05T15:04:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=8438d81444fe8338ccf8b43538ce6aacf4cd3c39'/>
<id>8438d81444fe8338ccf8b43538ce6aacf4cd3c39</id>
<content type='text'>
commit d269d4434c72ed0da3a9b1230c30da82c4918c63 upstream.

The USB console currently allocates a temporary fake tty which is used
to pass terminal settings to the underlying serial driver.

The tty struct is not fully initialised, something which can lead to a
lockdep warning (or worse) if a serial driver tries to acquire a
line-discipline reference:

	usbserial: USB Serial support registered for pl2303
	pl2303 1-2.1:1.0: pl2303 converter detected
	usb 1-2.1: pl2303 converter now attached to ttyUSB0
	INFO: trying to register non-static key.
	the code is fine but needs lockdep annotation.
	turning off the locking correctness validator.
	CPU: 0 PID: 68 Comm: udevd Tainted: G        W      3.18.0-rc5 #10
	[&lt;c0016f04&gt;] (unwind_backtrace) from [&lt;c0013978&gt;] (show_stack+0x20/0x24)
	[&lt;c0013978&gt;] (show_stack) from [&lt;c0449794&gt;] (dump_stack+0x24/0x28)
	[&lt;c0449794&gt;] (dump_stack) from [&lt;c006f730&gt;] (__lock_acquire+0x1e50/0x2004)
	[&lt;c006f730&gt;] (__lock_acquire) from [&lt;c0070128&gt;] (lock_acquire+0xe4/0x18c)
	[&lt;c0070128&gt;] (lock_acquire) from [&lt;c027c6f8&gt;] (ldsem_down_read_trylock+0x78/0x90)
	[&lt;c027c6f8&gt;] (ldsem_down_read_trylock) from [&lt;c027a1cc&gt;] (tty_ldisc_ref+0x24/0x58)
	[&lt;c027a1cc&gt;] (tty_ldisc_ref) from [&lt;c0340760&gt;] (usb_serial_handle_dcd_change+0x48/0xe8)
	[&lt;c0340760&gt;] (usb_serial_handle_dcd_change) from [&lt;bf000484&gt;] (pl2303_read_int_callback+0x210/0x220 [pl2303])
	[&lt;bf000484&gt;] (pl2303_read_int_callback [pl2303]) from [&lt;c031624c&gt;] (__usb_hcd_giveback_urb+0x80/0x140)
	[&lt;c031624c&gt;] (__usb_hcd_giveback_urb) from [&lt;c0316fc0&gt;] (usb_giveback_urb_bh+0x98/0xd4)
	[&lt;c0316fc0&gt;] (usb_giveback_urb_bh) from [&lt;c0042e44&gt;] (tasklet_hi_action+0x9c/0x108)
	[&lt;c0042e44&gt;] (tasklet_hi_action) from [&lt;c0042380&gt;] (__do_softirq+0x148/0x42c)
	[&lt;c0042380&gt;] (__do_softirq) from [&lt;c00429cc&gt;] (irq_exit+0xd8/0x114)
	[&lt;c00429cc&gt;] (irq_exit) from [&lt;c007ae58&gt;] (__handle_domain_irq+0x84/0xdc)
	[&lt;c007ae58&gt;] (__handle_domain_irq) from [&lt;c000879c&gt;] (omap_intc_handle_irq+0xd8/0xe0)
	[&lt;c000879c&gt;] (omap_intc_handle_irq) from [&lt;c0014544&gt;] (__irq_svc+0x44/0x7c)
	Exception stack(0xdf4e7f08 to 0xdf4e7f50)
	7f00:                   debc0b80 df4e7f5c 00000000 00000000 debc0b80 be8da96c
	7f20: 00000000 00000128 c000fc84 df4e6000 00000000 df4e7f94 00000004 df4e7f50
	7f40: c038ebc0 c038d74c 600f0013 ffffffff
	[&lt;c0014544&gt;] (__irq_svc) from [&lt;c038d74c&gt;] (___sys_sendmsg.part.29+0x0/0x2e0)
	[&lt;c038d74c&gt;] (___sys_sendmsg.part.29) from [&lt;c038ec08&gt;] (SyS_sendmsg+0x18/0x1c)
	[&lt;c038ec08&gt;] (SyS_sendmsg) from [&lt;c000fa00&gt;] (ret_fast_syscall+0x0/0x48)
	console [ttyUSB0] enabled

Fixes: 36697529b5bb ("tty: Replace ldisc locking with ldisc_sem")
Signed-off-by: Johan Hovold &lt;johan@kernel.org&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 d269d4434c72ed0da3a9b1230c30da82c4918c63 upstream.

The USB console currently allocates a temporary fake tty which is used
to pass terminal settings to the underlying serial driver.

The tty struct is not fully initialised, something which can lead to a
lockdep warning (or worse) if a serial driver tries to acquire a
line-discipline reference:

	usbserial: USB Serial support registered for pl2303
	pl2303 1-2.1:1.0: pl2303 converter detected
	usb 1-2.1: pl2303 converter now attached to ttyUSB0
	INFO: trying to register non-static key.
	the code is fine but needs lockdep annotation.
	turning off the locking correctness validator.
	CPU: 0 PID: 68 Comm: udevd Tainted: G        W      3.18.0-rc5 #10
	[&lt;c0016f04&gt;] (unwind_backtrace) from [&lt;c0013978&gt;] (show_stack+0x20/0x24)
	[&lt;c0013978&gt;] (show_stack) from [&lt;c0449794&gt;] (dump_stack+0x24/0x28)
	[&lt;c0449794&gt;] (dump_stack) from [&lt;c006f730&gt;] (__lock_acquire+0x1e50/0x2004)
	[&lt;c006f730&gt;] (__lock_acquire) from [&lt;c0070128&gt;] (lock_acquire+0xe4/0x18c)
	[&lt;c0070128&gt;] (lock_acquire) from [&lt;c027c6f8&gt;] (ldsem_down_read_trylock+0x78/0x90)
	[&lt;c027c6f8&gt;] (ldsem_down_read_trylock) from [&lt;c027a1cc&gt;] (tty_ldisc_ref+0x24/0x58)
	[&lt;c027a1cc&gt;] (tty_ldisc_ref) from [&lt;c0340760&gt;] (usb_serial_handle_dcd_change+0x48/0xe8)
	[&lt;c0340760&gt;] (usb_serial_handle_dcd_change) from [&lt;bf000484&gt;] (pl2303_read_int_callback+0x210/0x220 [pl2303])
	[&lt;bf000484&gt;] (pl2303_read_int_callback [pl2303]) from [&lt;c031624c&gt;] (__usb_hcd_giveback_urb+0x80/0x140)
	[&lt;c031624c&gt;] (__usb_hcd_giveback_urb) from [&lt;c0316fc0&gt;] (usb_giveback_urb_bh+0x98/0xd4)
	[&lt;c0316fc0&gt;] (usb_giveback_urb_bh) from [&lt;c0042e44&gt;] (tasklet_hi_action+0x9c/0x108)
	[&lt;c0042e44&gt;] (tasklet_hi_action) from [&lt;c0042380&gt;] (__do_softirq+0x148/0x42c)
	[&lt;c0042380&gt;] (__do_softirq) from [&lt;c00429cc&gt;] (irq_exit+0xd8/0x114)
	[&lt;c00429cc&gt;] (irq_exit) from [&lt;c007ae58&gt;] (__handle_domain_irq+0x84/0xdc)
	[&lt;c007ae58&gt;] (__handle_domain_irq) from [&lt;c000879c&gt;] (omap_intc_handle_irq+0xd8/0xe0)
	[&lt;c000879c&gt;] (omap_intc_handle_irq) from [&lt;c0014544&gt;] (__irq_svc+0x44/0x7c)
	Exception stack(0xdf4e7f08 to 0xdf4e7f50)
	7f00:                   debc0b80 df4e7f5c 00000000 00000000 debc0b80 be8da96c
	7f20: 00000000 00000128 c000fc84 df4e6000 00000000 df4e7f94 00000004 df4e7f50
	7f40: c038ebc0 c038d74c 600f0013 ffffffff
	[&lt;c0014544&gt;] (__irq_svc) from [&lt;c038d74c&gt;] (___sys_sendmsg.part.29+0x0/0x2e0)
	[&lt;c038d74c&gt;] (___sys_sendmsg.part.29) from [&lt;c038ec08&gt;] (SyS_sendmsg+0x18/0x1c)
	[&lt;c038ec08&gt;] (SyS_sendmsg) from [&lt;c000fa00&gt;] (ret_fast_syscall+0x0/0x48)
	console [ttyUSB0] enabled

Fixes: 36697529b5bb ("tty: Replace ldisc locking with ldisc_sem")
Signed-off-by: Johan Hovold &lt;johan@kernel.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>USB: keyspan: fix null-deref at probe</title>
<updated>2015-01-27T16:18:57+00:00</updated>
<author>
<name>Johan Hovold</name>
<email>johan@kernel.org</email>
</author>
<published>2014-12-22T17:39:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=a696260650e4f4f2e95d8520519550586766b458'/>
<id>a696260650e4f4f2e95d8520519550586766b458</id>
<content type='text'>
commit b5122236bba8d7ef62153da5b55cc65d0944c61e upstream.

Fix null-pointer dereference during probe if the interface-status
completion handler is called before the individual ports have been set
up.

Fixes: f79b2d0fe81e ("USB: keyspan: fix NULL-pointer dereferences and
memory leaks")
Reported-by: Richard &lt;richjunk@pacbell.net&gt;
Tested-by: Richard &lt;richjunk@pacbell.net&gt;
Signed-off-by: Johan Hovold &lt;johan@kernel.org&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 b5122236bba8d7ef62153da5b55cc65d0944c61e upstream.

Fix null-pointer dereference during probe if the interface-status
completion handler is called before the individual ports have been set
up.

Fixes: f79b2d0fe81e ("USB: keyspan: fix NULL-pointer dereferences and
memory leaks")
Reported-by: Richard &lt;richjunk@pacbell.net&gt;
Tested-by: Richard &lt;richjunk@pacbell.net&gt;
Signed-off-by: Johan Hovold &lt;johan@kernel.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>USB: cp210x: add IDs for CEL USB sticks and MeshWorks devices</title>
<updated>2015-01-27T16:18:57+00:00</updated>
<author>
<name>David Peterson</name>
<email>david.peterson@cel.com</email>
</author>
<published>2015-01-06T15:00:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=a1fec58704087636b24ebdf49d02934c0995248a'/>
<id>a1fec58704087636b24ebdf49d02934c0995248a</id>
<content type='text'>
commit 1ae78a4870989a354028cb17dabf819b595e70e3 upstream.

Added virtual com port VID/PID entries for CEL USB sticks and MeshWorks
devices.

Signed-off-by: David Peterson &lt;david.peterson@cel.com&gt;
Signed-off-by: Johan Hovold &lt;johan@kernel.org&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 1ae78a4870989a354028cb17dabf819b595e70e3 upstream.

Added virtual com port VID/PID entries for CEL USB sticks and MeshWorks
devices.

Signed-off-by: David Peterson &lt;david.peterson@cel.com&gt;
Signed-off-by: Johan Hovold &lt;johan@kernel.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>USB: cp210x: fix ID for production CEL MeshConnect USB Stick</title>
<updated>2015-01-27T16:18:57+00:00</updated>
<author>
<name>Preston Fick</name>
<email>pffick@gmail.com</email>
</author>
<published>2014-12-27T07:32:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=d92ad55b444c1ac63e669385d9b2a7a95aae6f24'/>
<id>d92ad55b444c1ac63e669385d9b2a7a95aae6f24</id>
<content type='text'>
commit 90441b4dbe90ba0c38111ea89fa093a8c9627801 upstream.

Fixing typo for MeshConnect IDs. The original PID (0x8875) is not in
production and is not needed. Instead it has been changed to the
official production PID (0x8857).

Signed-off-by: Preston Fick &lt;pffick@gmail.com&gt;
Signed-off-by: Johan Hovold &lt;johan@kernel.org&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 90441b4dbe90ba0c38111ea89fa093a8c9627801 upstream.

Fixing typo for MeshConnect IDs. The original PID (0x8875) is not in
production and is not needed. Instead it has been changed to the
official production PID (0x8857).

Signed-off-by: Preston Fick &lt;pffick@gmail.com&gt;
Signed-off-by: Johan Hovold &lt;johan@kernel.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>usb: dwc3: gadget: Stop TRB preparation after limit is reached</title>
<updated>2015-01-27T16:18:56+00:00</updated>
<author>
<name>Amit Virdi</name>
<email>amit.virdi@st.com</email>
</author>
<published>2015-01-13T08:57:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=adcf24128515915ae4a325af7a6d65b12e255709'/>
<id>adcf24128515915ae4a325af7a6d65b12e255709</id>
<content type='text'>
commit 39e60635a01520e8c8ed3946a28c2b98e6a46f79 upstream.

DWC3 gadget sets up a pool of 32 TRBs for each EP during initialization. This
means, the max TRBs that can be submitted for an EP is fixed to 32. Since the
request queue for an EP is a linked list, any number of requests can be queued
to it by the gadget layer.  However, the dwc3 driver must not submit TRBs more
than the pool it has created for. This limit wasn't respected when SG was used
resulting in submitting more than the max TRBs, eventually leading to
non-transfer of the TRBs submitted over the max limit.

Root cause:
When SG is used, there are two loops iterating to prepare TRBs:
 - Outer loop over the request_list
 - Inner loop over the SG list
The code was missing break to get out of the outer loop.

Fixes: eeb720fb21d6 (usb: dwc3: gadget: add support for SG lists)
Signed-off-by: Amit Virdi &lt;amit.virdi@st.com&gt;
Signed-off-by: Felipe Balbi &lt;balbi@ti.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 39e60635a01520e8c8ed3946a28c2b98e6a46f79 upstream.

DWC3 gadget sets up a pool of 32 TRBs for each EP during initialization. This
means, the max TRBs that can be submitted for an EP is fixed to 32. Since the
request queue for an EP is a linked list, any number of requests can be queued
to it by the gadget layer.  However, the dwc3 driver must not submit TRBs more
than the pool it has created for. This limit wasn't respected when SG was used
resulting in submitting more than the max TRBs, eventually leading to
non-transfer of the TRBs submitted over the max limit.

Root cause:
When SG is used, there are two loops iterating to prepare TRBs:
 - Outer loop over the request_list
 - Inner loop over the SG list
The code was missing break to get out of the outer loop.

Fixes: eeb720fb21d6 (usb: dwc3: gadget: add support for SG lists)
Signed-off-by: Amit Virdi &lt;amit.virdi@st.com&gt;
Signed-off-by: Felipe Balbi &lt;balbi@ti.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>usb: dwc3: gadget: Fix TRB preparation during SG</title>
<updated>2015-01-27T16:18:56+00:00</updated>
<author>
<name>Amit Virdi</name>
<email>amit.virdi@st.com</email>
</author>
<published>2015-01-13T08:57:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=0f1f031c46c984faeeca6d6d0adb7d11c2da3ced'/>
<id>0f1f031c46c984faeeca6d6d0adb7d11c2da3ced</id>
<content type='text'>
commit ec512fb8e5611fed1df2895f90317ce6797d6b32 upstream.

When scatter gather (SG) is used, multiple TRBs are prepared from one DWC3
request (dwc3_request). So while preparing TRBs, the 'last' flag should be set
only when it is the last TRB being prepared from the last dwc3_request entry.

The current implementation uses list_is_last to check if the dwc3_request is the
last entry from the request_list. However, list_is_last returns false for the
last entry too. This is because, while preparing the first TRB from a request,
the function dwc3_prepare_one_trb modifies the request's next and prev pointers
while moving the URB to req_queued. Hence, list_is_last always returns false no
matter what.

The correct way is not to access the modified pointers of dwc3_request but to
use list_empty macro instead.

Fixes: e5ba5ec833aa (usb: dwc3: gadget: fix scatter gather implementation)
Signed-off-by: Amit Virdi &lt;amit.virdi@st.com&gt;
Signed-off-by: Felipe Balbi &lt;balbi@ti.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 ec512fb8e5611fed1df2895f90317ce6797d6b32 upstream.

When scatter gather (SG) is used, multiple TRBs are prepared from one DWC3
request (dwc3_request). So while preparing TRBs, the 'last' flag should be set
only when it is the last TRB being prepared from the last dwc3_request entry.

The current implementation uses list_is_last to check if the dwc3_request is the
last entry from the request_list. However, list_is_last returns false for the
last entry too. This is because, while preparing the first TRB from a request,
the function dwc3_prepare_one_trb modifies the request's next and prev pointers
while moving the URB to req_queued. Hence, list_is_last always returns false no
matter what.

The correct way is not to access the modified pointers of dwc3_request but to
use list_empty macro instead.

Fixes: e5ba5ec833aa (usb: dwc3: gadget: fix scatter gather implementation)
Signed-off-by: Amit Virdi &lt;amit.virdi@st.com&gt;
Signed-off-by: Felipe Balbi &lt;balbi@ti.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>OHCI: add a quirk for ULi M5237 blocking on reset</title>
<updated>2015-01-27T16:18:56+00:00</updated>
<author>
<name>Arseny Solokha</name>
<email>asolokha@kb.kras.ru</email>
</author>
<published>2014-12-06T02:54:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=5cb2226deeb4ed98520ae2c5e6746daf62d99bd1'/>
<id>5cb2226deeb4ed98520ae2c5e6746daf62d99bd1</id>
<content type='text'>
commit 56abcab833fafcfaeb2f5b25e0364c1dec45f53e upstream.

Commit 8dccddbc2368 ("OHCI: final fix for NVIDIA problems (I hope)")
introduced into 3.1.9 broke boot on e.g. Freescale P2020DS development
board. The code path that was previously specific to NVIDIA controllers
had then become taken for all chips.

However, the M5237 installed on the board wedges solid when accessing
its base+OHCI_FMINTERVAL register, making it impossible to boot any
kernel newer than 3.1.8 on this particular and apparently other similar
machines.

Don't readl() and writel() base+OHCI_FMINTERVAL on PCI ID 10b9:5237.

The patch is suitable for the -next tree as well as all maintained
kernels up to 3.2 inclusive.

Signed-off-by: Arseny Solokha &lt;asolokha@kb.kras.ru&gt;
Acked-by: Alan Stern &lt;stern@rowland.harvard.edu&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&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 56abcab833fafcfaeb2f5b25e0364c1dec45f53e upstream.

Commit 8dccddbc2368 ("OHCI: final fix for NVIDIA problems (I hope)")
introduced into 3.1.9 broke boot on e.g. Freescale P2020DS development
board. The code path that was previously specific to NVIDIA controllers
had then become taken for all chips.

However, the M5237 installed on the board wedges solid when accessing
its base+OHCI_FMINTERVAL register, making it impossible to boot any
kernel newer than 3.1.8 on this particular and apparently other similar
machines.

Don't readl() and writel() base+OHCI_FMINTERVAL on PCI ID 10b9:5237.

The patch is suitable for the -next tree as well as all maintained
kernels up to 3.2 inclusive.

Signed-off-by: Arseny Solokha &lt;asolokha@kb.kras.ru&gt;
Acked-by: Alan Stern &lt;stern@rowland.harvard.edu&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
</feed>
