On Do, 2018-11-15 at 18:14 +0100, Nicolas Saenz Julienne wrote: Hi, what Alan said, in addition you need to stop the error handling when the device is suspended or reset. > @@ -713,8 +751,10 @@ static void hub_irq(struct urb *urb) > return; > > status = usb_submit_urb(hub->urb, GFP_ATOMIC); > - if (status != 0 && status != -ENODEV && status != -EPERM) > + if (status != 0 && status != -ENODEV && status != -EPERM) { This also needs to check for -ESHUTDOWN Regards Oliver