This patch (as1596) improves the queue-restart logic in usbhid by
checking to see if the device is suspended or a reset is about to
occur.  There's no point submitting an URB if either of those is
true.

Signed-off-by: Alan Stern <st...@rowland.harvard.edu>
CC: Oliver Neukum <oli...@neukum.org>

---

 drivers/hid/usbhid/hid-core.c |    6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

Index: usb-3.5/drivers/hid/usbhid/hid-core.c
===================================================================
--- usb-3.5.orig/drivers/hid/usbhid/hid-core.c
+++ usb-3.5/drivers/hid/usbhid/hid-core.c
@@ -207,7 +207,8 @@ static int usbhid_restart_out_queue(stru
        int kicked;
        int r;
 
-       if (!hid)
+       if (!hid || test_bit(HID_RESET_PENDING, &usbhid->iofl) ||
+                       test_bit(HID_SUSPENDED, &usbhid->iofl))
                return 0;
 
        if ((kicked = (usbhid->outhead != usbhid->outtail))) {
@@ -245,7 +246,8 @@ static int usbhid_restart_ctrl_queue(str
        int r;
 
        WARN_ON(hid == NULL);
-       if (!hid)
+       if (!hid || test_bit(HID_RESET_PENDING, &usbhid->iofl) ||
+                       test_bit(HID_SUSPENDED, &usbhid->iofl))
                return 0;
 
        if ((kicked = (usbhid->ctrlhead != usbhid->ctrltail))) {


--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to