This is a note to let you know that I've just added the patch titled
xHCI: Cleanup isoc transfer ring when TD length mismatch found
to the 3.0-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
xhci-cleanup-isoc-transfer-ring-when-td-length-mismatch-found.patch
and it can be found in the queue-3.0 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <[email protected]> know about it.
>From cf840551a884360841bd3d3ce1ad0868ff0b759a Mon Sep 17 00:00:00 2001
From: Andiry Xu <[email protected]>
Date: Wed, 18 Jan 2012 17:47:12 +0800
Subject: xHCI: Cleanup isoc transfer ring when TD length mismatch found
From: Andiry Xu <[email protected]>
commit cf840551a884360841bd3d3ce1ad0868ff0b759a upstream.
When a TD length mismatch is found during isoc TRB enqueue, it directly
returns -EINVAL. However, isoc transfer is partially enqueued at this time,
and the ring should be cleared.
This should be backported to kernels as old as 2.6.36, which contain the
commit 522989a27c7badb608155b1f1dea3487ed431f74 "xhci: Fix failed
enqueue in the middle of isoch TD."
Signed-off-by: Andiry Xu <[email protected]>
Signed-off-by: Sarah Sharp <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/usb/host/xhci-ring.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
--- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c
@@ -3382,7 +3382,8 @@ static int xhci_queue_isoc_tx(struct xhc
/* Check TD length */
if (running_total != td_len) {
xhci_err(xhci, "ISOC TD length unmatch\n");
- return -EINVAL;
+ ret = -EINVAL;
+ goto cleanup;
}
}
Patches currently in stable-queue which might be from [email protected] are
queue-3.0/xhci-cleanup-isoc-transfer-ring-when-td-length-mismatch-found.patch
queue-3.0/xhci-fix-usb-3.0-device-restart-on-resume.patch
--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html