|
@@ -1226,6 +1226,12 @@ int wa_urb_dequeue(struct wahc *wa, struct urb *urb)
|
|
|
}
|
|
|
spin_lock_irqsave(&xfer->lock, flags);
|
|
|
rpipe = xfer->ep->hcpriv;
|
|
|
+ if (rpipe == NULL) {
|
|
|
+ pr_debug("%s: xfer id 0x%08X has no RPIPE. %s",
|
|
|
+ __func__, wa_xfer_id(xfer),
|
|
|
+ "Probably already aborted.\n" );
|
|
|
+ goto out_unlock;
|
|
|
+ }
|
|
|
/* Check the delayed list -> if there, release and complete */
|
|
|
spin_lock_irqsave(&wa->xfer_list_lock, flags2);
|
|
|
if (!list_empty(&xfer->list_node) && xfer->seg == NULL)
|
|
@@ -1644,8 +1650,7 @@ static void wa_xfer_result_cb(struct urb *urb)
|
|
|
break;
|
|
|
}
|
|
|
usb_status = xfer_result->bTransferStatus & 0x3f;
|
|
|
- if (usb_status == WA_XFER_STATUS_ABORTED
|
|
|
- || usb_status == WA_XFER_STATUS_NOT_FOUND)
|
|
|
+ if (usb_status == WA_XFER_STATUS_NOT_FOUND)
|
|
|
/* taken care of already */
|
|
|
break;
|
|
|
xfer_id = xfer_result->dwTransferID;
|