USB: EHCI: add pointer to end of async-unlink list

This patch (as1570) adds a pointer for the end of ehci-hcd's
async-unlink list.  The list (which is actually a queue) is singly
linked, so having a pointer to its end makes adding new entries easier
-- there's no longer any need to scan through the whole list.

In principle it could be changed to a standard doubly-linked list.  It
turns out that doing so actually makes the code less clear, so I'm
leaving it as is.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c
index efee426..8b75e42 100644
--- a/drivers/usb/host/ehci-hcd.c
+++ b/drivers/usb/host/ehci-hcd.c
@@ -1041,14 +1041,9 @@
 
 	/* defer till later if busy */
 	if (ehci->async_unlink) {
-		struct ehci_qh		*last;
-
-		for (last = ehci->async_unlink;
-				last->unlink_next;
-				last = last->unlink_next)
-			continue;
 		qh->qh_state = QH_STATE_UNLINK_WAIT;
-		last->unlink_next = qh;
+		ehci->async_unlink_last->unlink_next = qh;
+		ehci->async_unlink_last = qh;
 
 	/* start IAA cycle */
 	} else