can: mcba_usb: cancel urb on -EPROTO
authorMartin Kelly <mkelly@xevo.com>
Tue, 5 Dec 2017 18:34:03 +0000 (10:34 -0800)
committerMarc Kleine-Budde <mkl@pengutronix.de>
Fri, 8 Dec 2017 09:45:11 +0000 (10:45 +0100)
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>
Cc: linux-stable <stable@vger.kernel.org>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
drivers/net/can/usb/mcba_usb.c

index ef417dcddbf74a59dffff3b82fbff55c13277174..8d8c2086424d09b2c93a377be756dead26dc7979 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;