can: mcba_usb: cancel urb on -EPROTO
authorMartin Kelly <mkelly@xevo.com>
Tue, 5 Dec 2017 18:34:03 +0000 (10:34 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 14 Dec 2017 08:52:47 +0000 (09:52 +0100)
commit c7f33023308f3142433b7379718af5f0c2c322a6 upstream.

When we unplug the device, we can see both -EPIPE and -EPROTO depending
on exact timing and what system we run on. If we continue to resubmit
URBs, they will immediately fail, and they can cause stalls, especially
on slower CPUs.

Fix this by not resubmitting on -EPROTO, as we already do on -EPIPE.

Signed-off-by: Martin Kelly <mkelly@xevo.com>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/net/can/usb/mcba_usb.c

index a884d31fe324c93d1622b3debe3cdd493bf69680..e0c24abce16ce9759307b242844ff4d2e7881056 100644 (file)
@@ -593,6 +593,7 @@ static void mcba_usb_read_bulk_callback(struct urb *urb)
 
        case -ENOENT:
        case -EPIPE:
+       case -EPROTO:
        case -ESHUTDOWN:
                return;