From: Greg Kroah-Hartman Date: Fri, 8 Feb 2013 17:37:55 +0000 (-0800) Subject: 3.7-stable patches X-Git-Tag: v3.0.63~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=069670225f2dd36106c130520dcc617e4482ca4c;p=thirdparty%2Fkernel%2Fstable-queue.git 3.7-stable patches added patches: usb-ehci-fix-for-leaking-isochronous-data.patch --- diff --git a/queue-3.7/series b/queue-3.7/series index 2b27a29c34d..b62329058c5 100644 --- a/queue-3.7/series +++ b/queue-3.7/series @@ -32,3 +32,4 @@ xhci-fix-isoc-td-encoding.patch xhci-fix-td-size-for-isochronous-urbs.patch usb-xhci-fix-memory-leak-of-urb-private-data.patch usb-prevent-dead-ports-when-xhci-is-not-enabled.patch +usb-ehci-fix-for-leaking-isochronous-data.patch diff --git a/queue-3.7/usb-ehci-fix-for-leaking-isochronous-data.patch b/queue-3.7/usb-ehci-fix-for-leaking-isochronous-data.patch new file mode 100644 index 00000000000..3d27653eb0a --- /dev/null +++ b/queue-3.7/usb-ehci-fix-for-leaking-isochronous-data.patch @@ -0,0 +1,35 @@ +From b09a61cc0bc2a7151f4ab652489e85253d5d0175 Mon Sep 17 00:00:00 2001 +From: Alan Stern +Date: Wed, 30 Jan 2013 16:35:02 -0500 +Subject: USB: EHCI: fix for leaking isochronous data + +From: Alan Stern + +commit b09a61cc0bc2a7151f4ab652489e85253d5d0175 upstream. + +This patch (as1653) fixes a bug in ehci-hcd. Unlike iTD entries, an +siTD entry in the periodic schedule may not complete until the frame +after the one it belongs to. Consequently, when scanning the periodic +schedule it is necessary to start with the frame _preceding_ the one +where the previous scan ended. + +Not doing this properly can result in memory leaks and failures to +complete isochronous URBs. + +Signed-off-by: Alan Stern +Reported-and-tested-by: Andy Leiserson +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/host/ehci-sched.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/usb/host/ehci-sched.c ++++ b/drivers/usb/host/ehci-sched.c +@@ -2336,5 +2336,5 @@ restart: + break; + frame = (frame + 1) & fmask; + } +- ehci->next_frame = now_frame; ++ ehci->next_frame = (frame - 1) & fmask; + }