<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/drivers/usb, branch v3.4.96</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/drivers/usb?h=v3.4.96</id>
<link rel='self' href='https://git.amat.us/linux/atom/drivers/usb?h=v3.4.96'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2014-07-01T03:01:33Z</updated>
<entry>
<title>usb: usbtest: Add timetout to simple_io()</title>
<updated>2014-07-01T03:01:33Z</updated>
<author>
<name>Roger Quadros</name>
<email>rogerq@ti.com</email>
</author>
<published>2013-12-18T10:10:10Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=3b0d0894ebaede13481207275e075f2975fb30a3'/>
<id>urn:sha1:3b0d0894ebaede13481207275e075f2975fb30a3</id>
<content type='text'>
commit e5e4746510d140261918aecce2e5e3aa4456f7e9 upstream.

Without a timetout some tests e.g. test_halt() can remain stuck forever.

Signed-off-by: Roger Quadros &lt;rogerq@ti.com&gt;
Reviewed-by: Felipe Balbi &lt;balbi@ti.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>USB: sierra: fix remote wakeup</title>
<updated>2014-07-01T03:01:32Z</updated>
<author>
<name>Johan Hovold</name>
<email>jhovold@gmail.com</email>
</author>
<published>2014-05-26T17:22:54Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=d228aeaff57cb42b134b499fd1cd6111724b9340'/>
<id>urn:sha1:d228aeaff57cb42b134b499fd1cd6111724b9340</id>
<content type='text'>
commit 80cc0fcbdaeaf10d04ba27779a2d7ceb73d2717a upstream.

Make sure that needs_remote_wake up is always set when there are open
ports.

Currently close() would unconditionally set needs_remote_wakeup to 0
even though there might still be open ports. This could lead to blocked
input and possibly dropped data on devices that do not support remote
wakeup (and which must therefore not be runtime suspended while open).

Add an open_ports counter (protected by the susp_lock) and only clear
needs_remote_wakeup when the last port is closed.

Fixes: e6929a9020ac ("USB: support for autosuspend in sierra while
online")

Signed-off-by: Johan Hovold &lt;jhovold@gmail.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>USB: sierra: fix urb and memory leak on disconnect</title>
<updated>2014-07-01T03:01:32Z</updated>
<author>
<name>Johan Hovold</name>
<email>jhovold@gmail.com</email>
</author>
<published>2014-05-26T17:22:53Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=edc71a5ebfed93d04c5648a6e9f94a5358d46aa0'/>
<id>urn:sha1:edc71a5ebfed93d04c5648a6e9f94a5358d46aa0</id>
<content type='text'>
commit 014333f77c0b71123d6ef7d31a9724e0699c9548 upstream.

The delayed-write queue was never emptied on disconnect, something which
would lead to leaked urbs and transfer buffers if the device is
disconnected before being runtime resumed due to a write.

Fixes: e6929a9020ac ("USB: support for autosuspend in sierra while
online")

Signed-off-by: Johan Hovold &lt;jhovold@gmail.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>USB: sierra: fix urb and memory leak in resume error path</title>
<updated>2014-07-01T03:01:32Z</updated>
<author>
<name>Johan Hovold</name>
<email>jhovold@gmail.com</email>
</author>
<published>2014-05-26T17:22:52Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=fe8dec3ea2a9e1105ca5ae46f2baa1c9935923b3'/>
<id>urn:sha1:fe8dec3ea2a9e1105ca5ae46f2baa1c9935923b3</id>
<content type='text'>
commit 7fdd26a01eb7b6cb6855ff8f69ef4a720720dfcb upstream.

Neither the transfer buffer or the urb itself were released in the
resume error path for delayed writes. Also on errors, the remainder of
the queue was not even processed, which leads to further urb and buffer
leaks.

The same error path also failed to balance the outstanding-urb counter,
something which results in degraded throughput or completely blocked
writes.

Fix this by releasing urb and buffer and balancing counters on errors,
and by always processing the whole queue even when submission of one urb
fails.

Fixes: e6929a9020ac ("USB: support for autosuspend in sierra while
online")

Signed-off-by: Johan Hovold &lt;jhovold@gmail.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>USB: sierra: fix use after free at suspend/resume</title>
<updated>2014-07-01T03:01:32Z</updated>
<author>
<name>Johan Hovold</name>
<email>jhovold@gmail.com</email>
</author>
<published>2014-05-26T17:22:51Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=05bec811d722b1e98885875a59c2dbc42cec4145'/>
<id>urn:sha1:05bec811d722b1e98885875a59c2dbc42cec4145</id>
<content type='text'>
commit 8452727de70f6ad850cd6d0aaa18b5d9050aa63b upstream.

Fix use after free or NULL-pointer dereference during suspend and
resume.

The port data may never have been allocated (port probe failed)
or may already have been released by port_remove (e.g. driver is
unloaded) when suspend and resume are called.

Fixes: e6929a9020ac ("USB: support for autosuspend in sierra while
online")

Signed-off-by: Johan Hovold &lt;jhovold@gmail.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>USB: sierra: fix AA deadlock in open error path</title>
<updated>2014-07-01T03:01:32Z</updated>
<author>
<name>Johan Hovold</name>
<email>jhovold@gmail.com</email>
</author>
<published>2014-05-26T17:22:50Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=3c3d7a87ae8efae4491d15e9de2735f803b9c30a'/>
<id>urn:sha1:3c3d7a87ae8efae4491d15e9de2735f803b9c30a</id>
<content type='text'>
commit 353fe198602e8b4d1c7bdcceb8e60955087201b1 upstream.

Fix AA deadlock in open error path that would call close() and try to
grab the already held disc_mutex.

Fixes: b9a44bc19f48 ("sierra: driver urb handling improvements")

Signed-off-by: Johan Hovold &lt;jhovold@gmail.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>USB: usb_wwan: fix potential blocked I/O after resume</title>
<updated>2014-07-01T03:01:32Z</updated>
<author>
<name>Johan Hovold</name>
<email>jhovold@gmail.com</email>
</author>
<published>2014-05-26T17:23:18Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=9e91351f9626fe1822c5d6e8c10cece4d5e92d1d'/>
<id>urn:sha1:9e91351f9626fe1822c5d6e8c10cece4d5e92d1d</id>
<content type='text'>
commit fb7ad4f93d9f0f7d49beda32f5e7becb94b29a4d upstream.

Keep trying to submit urbs rather than bail out on first read-urb
submission error, which would also prevent I/O for any further ports
from being resumed.

Instead keep an error count, for all types of failed submissions, and
let USB core know that something went wrong.

Also make sure to always clear the suspended flag. Currently a failed
read-urb submission would prevent cached writes as well as any
subsequent writes from being submitted until next suspend-resume cycle,
something which may not even necessarily happen.

Note that USB core currently only logs an error if an interface resume
failed.

Fixes: 383cedc3bb43 ("USB: serial: full autosuspend support for the
option driver")

Signed-off-by: Johan Hovold &lt;jhovold@gmail.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>USB: usb_wwan: fix potential NULL-deref at resume</title>
<updated>2014-07-01T03:01:32Z</updated>
<author>
<name>Johan Hovold</name>
<email>jhovold@gmail.com</email>
</author>
<published>2014-05-26T17:23:17Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=0886f4e9008835a02210f30a0850ddb7297a9ece'/>
<id>urn:sha1:0886f4e9008835a02210f30a0850ddb7297a9ece</id>
<content type='text'>
commit 9096f1fbba916c2e052651e9de82fcfb98d4bea7 upstream.

The interrupt urb was submitted unconditionally at resume, something
which could lead to a NULL-pointer dereference in the urb completion
handler as resume may be called after the port and port data is gone.

Fix this by making sure the interrupt urb is only submitted and active
when the port is open.

Fixes: 383cedc3bb43 ("USB: serial: full autosuspend support for the
option driver")

Signed-off-by: Johan Hovold &lt;jhovold@gmail.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>USB: usb_wwan: fix urb leak at shutdown</title>
<updated>2014-07-01T03:01:32Z</updated>
<author>
<name>Johan Hovold</name>
<email>jhovold@gmail.com</email>
</author>
<published>2014-05-26T17:23:16Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=ca91395e1b1aa0802307dbf493347d4dea0b2063'/>
<id>urn:sha1:ca91395e1b1aa0802307dbf493347d4dea0b2063</id>
<content type='text'>
commit 79eed03e77d481b55d85d1cfe5a1636a0d3897fd upstream.

The delayed-write queue was never emptied at shutdown (close), something
which could lead to leaked urbs if the port is closed before being
runtime resumed due to a write.

When this happens the output buffer would not drain on close
(closing_wait timeout), and after consecutive opens, writes could be
corrupted with previously buffered data, transfered with reduced
throughput or completely blocked.

Note that unbusy_queued_urb() was simply moved out of CONFIG_PM.

Fixes: 383cedc3bb43 ("USB: serial: full autosuspend support for the
option driver")

Signed-off-by: Johan Hovold &lt;jhovold@gmail.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>USB: usb_wwan: fix write and suspend race</title>
<updated>2014-07-01T03:01:32Z</updated>
<author>
<name>Johan Hovold</name>
<email>jhovold@gmail.com</email>
</author>
<published>2014-05-26T17:23:15Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=887b3c368f744e95538a6ab0f9d91d21d933c5c4'/>
<id>urn:sha1:887b3c368f744e95538a6ab0f9d91d21d933c5c4</id>
<content type='text'>
commit 170fad9e22df0063eba0701adb966786d7a4ec5a upstream.

Fix race between write() and suspend() which could lead to writes being
dropped (or I/O while suspended) if the device is runtime suspended
while a write request is being processed.

Specifically, suspend() releases the susp_lock after determining the
device is idle but before setting the suspended flag, thus leaving a
window where a concurrent write() can submit an urb.

Fixes: 383cedc3bb43 ("USB: serial: full autosuspend support for the
option driver")

Signed-off-by: Johan Hovold &lt;jhovold@gmail.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
</feed>
