diff --git a/drivers/staging/vt6656/usbpipe.c b/drivers/staging/vt6656/usbpipe.c index 258eec13b8df..d18cb2f0fb41 100644 --- a/drivers/staging/vt6656/usbpipe.c +++ b/drivers/staging/vt6656/usbpipe.c @@ -364,6 +364,19 @@ static void s_nsInterruptUsbIoCompleteRead(struct urb *urb) // 4) The irp was cancelled. // 5) Some other failure from the USB device object. // + switch (urb->status) { + case 0: + case -ETIMEDOUT: + break; + case -ECONNRESET: + case -ENOENT: + case -ESHUTDOWN: + pDevice->intBuf.bInUse = false; + return; + default: + break; + } + ntStatus = urb->status; DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"s_nsInterruptUsbIoCompleteRead Status %d\n", ntStatus);