Return -ENOENT for unlinked URBs.
Signed-off-by: Thomas Pugliese <thomas.pugliese@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
pr_debug("%s: xfer %p id 0x%08X has no RPIPE. %s",
__func__, xfer, wa_xfer_id(xfer),
"Probably already aborted.\n" );
pr_debug("%s: xfer %p id 0x%08X has no RPIPE. %s",
__func__, xfer, wa_xfer_id(xfer),
"Probably already aborted.\n" );
goto out_unlock;
}
/* Check the delayed list -> if there, release and complete */
goto out_unlock;
}
/* Check the delayed list -> if there, release and complete */
* segments will be completed in the DTI interrupt.
*/
seg->status = WA_SEG_ABORTED;
* segments will be completed in the DTI interrupt.
*/
seg->status = WA_SEG_ABORTED;
spin_lock_irqsave(&rpipe->seg_lock, flags2);
list_del(&seg->list_node);
xfer->segs_done++;
spin_lock_irqsave(&rpipe->seg_lock, flags2);
list_del(&seg->list_node);
xfer->segs_done++;
wa_xfer_completion(xfer);
if (rpipe_ready)
wa_xfer_delayed_run(rpipe);
wa_xfer_completion(xfer);
if (rpipe_ready)
wa_xfer_delayed_run(rpipe);
out_unlock:
spin_unlock_irqrestore(&xfer->lock, flags);
out:
out_unlock:
spin_unlock_irqrestore(&xfer->lock, flags);
out:
dequeue_delayed:
list_del_init(&xfer->list_node);
dequeue_delayed:
list_del_init(&xfer->list_node);
[WA_XFER_STATUS_NOT_FOUND] = 0,
[WA_XFER_STATUS_INSUFFICIENT_RESOURCE] = -ENOMEM,
[WA_XFER_STATUS_TRANSACTION_ERROR] = -EILSEQ,
[WA_XFER_STATUS_NOT_FOUND] = 0,
[WA_XFER_STATUS_INSUFFICIENT_RESOURCE] = -ENOMEM,
[WA_XFER_STATUS_TRANSACTION_ERROR] = -EILSEQ,
- [WA_XFER_STATUS_ABORTED] = -EINTR,
+ [WA_XFER_STATUS_ABORTED] = -ENOENT,
[WA_XFER_STATUS_RPIPE_NOT_READY] = EINVAL,
[WA_XFER_INVALID_FORMAT] = EINVAL,
[WA_XFER_UNEXPECTED_SEGMENT_NUMBER] = EINVAL,
[WA_XFER_STATUS_RPIPE_NOT_READY] = EINVAL,
[WA_XFER_INVALID_FORMAT] = EINVAL,
[WA_XFER_UNEXPECTED_SEGMENT_NUMBER] = EINVAL,