From: Alan Stern Date: Thu, 31 Aug 2006 18:18:39 +0000 (-0400) Subject: uhci-hcd: fix list access bug X-Git-Tag: v2.6.17.12~13 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4ccc9a4b06b170b88d25bfd2d50fce487ed1471c;p=thirdparty%2Fkernel%2Fstable.git uhci-hcd: fix list access bug When skipping to the last TD of an URB, go to the _last_ entry in the list instead of the _first_ entry (as780). This fixes Bugzilla #6747 and possibly others. Signed-off-by: Alan Stern Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/usb/host/uhci-q.c b/drivers/usb/host/uhci-q.c index 27909bcf7a1d3..5f44354c467e3 100644 --- a/drivers/usb/host/uhci-q.c +++ b/drivers/usb/host/uhci-q.c @@ -264,7 +264,7 @@ static void uhci_fixup_toggles(struct uhci_qh *qh, int skip_first) * need to change any toggles in this URB */ td = list_entry(urbp->td_list.next, struct uhci_td, list); if (toggle > 1 || uhci_toggle(td_token(td)) == toggle) { - td = list_entry(urbp->td_list.next, struct uhci_td, + td = list_entry(urbp->td_list.prev, struct uhci_td, list); toggle = uhci_toggle(td_token(td)) ^ 1;