diff options
Diffstat (limited to 'drivers/usb/wusbcore/wa-xfer.c')
-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 f5c81afc6e96..cef940f4de7c 100644 --- a/drivers/usb/wusbcore/wa-xfer.c +++ b/drivers/usb/wusbcore/wa-xfer.c | |||
@@ -1231,6 +1231,12 @@ int wa_urb_dequeue(struct wahc *wa, struct urb *urb) | |||
1231 | } | 1231 | } |
1232 | spin_lock_irqsave(&xfer->lock, flags); | 1232 | spin_lock_irqsave(&xfer->lock, flags); |
1233 | rpipe = xfer->ep->hcpriv; | 1233 | rpipe = xfer->ep->hcpriv; |
1234 | if (rpipe == NULL) { | ||
1235 | pr_debug("%s: xfer id 0x%08X has no RPIPE. %s", | ||
1236 | __func__, wa_xfer_id(xfer), | ||
1237 | "Probably already aborted.\n" ); | ||
1238 | goto out_unlock; | ||
1239 | } | ||
1234 | /* Check the delayed list -> if there, release and complete */ | 1240 | /* Check the delayed list -> if there, release and complete */ |
1235 | spin_lock_irqsave(&wa->xfer_list_lock, flags2); | 1241 | spin_lock_irqsave(&wa->xfer_list_lock, flags2); |
1236 | if (!list_empty(&xfer->list_node) && xfer->seg == NULL) | 1242 | if (!list_empty(&xfer->list_node) && xfer->seg == NULL) |
@@ -1649,8 +1655,7 @@ static void wa_xfer_result_cb(struct urb *urb) | |||
1649 | break; | 1655 | break; |
1650 | } | 1656 | } |
1651 | usb_status = xfer_result->bTransferStatus & 0x3f; | 1657 | usb_status = xfer_result->bTransferStatus & 0x3f; |
1652 | if (usb_status == WA_XFER_STATUS_ABORTED | 1658 | if (usb_status == WA_XFER_STATUS_NOT_FOUND) |
1653 | || usb_status == WA_XFER_STATUS_NOT_FOUND) | ||
1654 | /* taken care of already */ | 1659 | /* taken care of already */ |
1655 | break; | 1660 | break; |
1656 | xfer_id = xfer_result->dwTransferID; | 1661 | xfer_id = xfer_result->dwTransferID; |