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 <stern@xxxxxxxxxxxxxxxxxxx> CC: Oliver Neukum <oliver@xxxxxxxxxx> --- 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 majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html