This patch (as1653s) 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.

This patch is meant for the 3.7 and earlier stable kernels.  It was
back-ported from upstream commit
b09a61cc0bc2a7151f4ab652489e85253d5d0175.

Signed-off-by: Alan Stern <[email protected]>
Reported-and-tested-by: Andy Leiserson <[email protected]>
CC: <[email protected]>

---

 drivers/usb/host/ehci-sched.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Index: 3.7/drivers/usb/host/ehci-sched.c
===================================================================
--- 3.7.orig/drivers/usb/host/ehci-sched.c
+++ 3.7/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;
 }

--
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

Reply via email to