From: Alan Stern Maybe the serial device driver is submitting an URB that is already in use. This patch might catch the error. Cc: Signed-off-by: Andrew Morton --- drivers/usb/core/urb.c | 6 ++++++ 1 files changed, 6 insertions(+) diff -puN drivers/usb/core/urb.c~usb-try-to-debug-bug-8561 drivers/usb/core/urb.c --- a/drivers/usb/core/urb.c~usb-try-to-debug-bug-8561 +++ a/drivers/usb/core/urb.c @@ -288,6 +288,12 @@ int usb_submit_urb(struct urb *urb, gfp_ || dev->state == USB_STATE_SUSPENDED) return -EHOSTUNREACH; + /* Not a precise test, but useful for debugging */ + if (urb->status == -EINPROGRESS) { + WARN_ON(1); + return -EBUSY; + } + urb->status = -EINPROGRESS; urb->actual_length = 0; _