From: Alan Stern <stern@rowland.harvard.edu>
Date: Thu, 31 Aug 2006 18:18:39 +0000 (-0400)
Subject: uhci-hcd: fix list access bug
X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=db59b464f8708cdba857f16b183cff0b7466d6b5;p=GitHub%2Fexynos8895%2Fandroid_kernel_samsung_universal8895.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 <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---

diff --git a/drivers/usb/host/uhci-q.c b/drivers/usb/host/uhci-q.c
index 026dad06f82b..431e8f31f1a9 100644
--- a/drivers/usb/host/uhci-q.c
+++ b/drivers/usb/host/uhci-q.c
@@ -372,7 +372,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;