diff options
-rw-r--r-- | drivers/usb/wusbcore/wa-xfer.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/usb/wusbcore/wa-xfer.c b/drivers/usb/wusbcore/wa-xfer.c index 6ef94bce8c0d..028fc8337435 100644 --- a/drivers/usb/wusbcore/wa-xfer.c +++ b/drivers/usb/wusbcore/wa-xfer.c | |||
@@ -1110,6 +1110,12 @@ int wa_urb_dequeue(struct wahc *wa, struct urb *urb) | |||
1110 | } | 1110 | } |
1111 | spin_lock_irqsave(&xfer->lock, flags); | 1111 | spin_lock_irqsave(&xfer->lock, flags); |
1112 | rpipe = xfer->ep->hcpriv; | 1112 | rpipe = xfer->ep->hcpriv; |
1113 | if (rpipe == NULL) { | ||
1114 | pr_debug("%s: xfer id 0x%08X has no RPIPE. %s", | ||
1115 | __func__, wa_xfer_id(xfer), | ||
1116 | "Probably already aborted.\n" ); | ||
1117 | goto out_unlock; | ||
1118 | } | ||
1113 | /* Check the delayed list -> if there, release and complete */ | 1119 | /* Check the delayed list -> if there, release and complete */ |
1114 | spin_lock_irqsave(&wa->xfer_list_lock, flags2); | 1120 | spin_lock_irqsave(&wa->xfer_list_lock, flags2); |
1115 | if (!list_empty(&xfer->list_node) && xfer->seg == NULL) | 1121 | if (!list_empty(&xfer->list_node) && xfer->seg == NULL) |
@@ -1493,8 +1499,7 @@ static void wa_xfer_result_cb(struct urb *urb) | |||
1493 | break; | 1499 | break; |
1494 | } | 1500 | } |
1495 | usb_status = xfer_result->bTransferStatus & 0x3f; | 1501 | usb_status = xfer_result->bTransferStatus & 0x3f; |
1496 | if (usb_status == WA_XFER_STATUS_ABORTED | 1502 | if (usb_status == WA_XFER_STATUS_NOT_FOUND) |
1497 | || usb_status == WA_XFER_STATUS_NOT_FOUND) | ||
1498 | /* taken care of already */ | 1503 | /* taken care of already */ |
1499 | break; | 1504 | break; |
1500 | xfer_id = xfer_result->dwTransferID; | 1505 | xfer_id = xfer_result->dwTransferID; |