Since a td can beither on the uhci->td_list or uhci->td_remove_list, but not both; it makes sense to use the same list pointers and use the list_move functions, when moving.
diff -Nru a/drivers/usb/host/uhci-hcd.c b/drivers/usb/host/uhci-hcd.c --- a/drivers/usb/host/uhci-hcd.c Tue Feb 24 09:59:01 2004 +++ b/drivers/usb/host/uhci-hcd.c Tue Feb 24 09:59:01 2004 @@ -157,7 +157,6 @@ td->dev = dev; INIT_LIST_HEAD(&td->list); - INIT_LIST_HEAD(&td->remove_list); INIT_LIST_HEAD(&td->fl_list); usb_get_dev(dev); @@ -288,8 +287,6 @@ { if (!list_empty(&td->list)) dev_warn(uhci_dev(uhci), "td %p still in list!\n", td); - if (!list_empty(&td->remove_list)) - dev_warn(uhci_dev(uhci), "td %p still in remove_list!\n", td); if (!list_empty(&td->fl_list)) dev_warn(uhci_dev(uhci), "td %p still in fl_list!\n", td); @@ -694,19 +691,6 @@ /* * MUST be called with urb->lock acquired */ -static void uhci_remove_td_from_urb(struct uhci_td *td) -{ - if (list_empty(&td->list)) - return; - - list_del_init(&td->list); - - td->urb = NULL; -} - -/* - * MUST be called with urb->lock acquired - */ static void uhci_destroy_urb_priv(struct uhci_hcd *uhci, struct urb *urb) { struct list_head *head, *tmp; @@ -735,9 +719,9 @@ tmp = tmp->next; - uhci_remove_td_from_urb(td); + td->urb = NULL; uhci_remove_td(uhci, td); - list_add(&td->remove_list, &uhci->td_remove_list); + list_move_tail(&td->list, &uhci->td_remove_list); } spin_unlock_irqrestore(&uhci->td_remove_list_lock, flags); @@ -951,7 +935,7 @@ tmp = tmp->next; - uhci_remove_td_from_urb(td); + td->urb = NULL; uhci_remove_td(uhci, td); uhci_free_td(uhci, td); } @@ -1805,11 +1789,11 @@ head = &uhci->td_remove_list; tmp = head->next; while (tmp != head) { - struct uhci_td *td = list_entry(tmp, struct uhci_td, remove_list); + struct uhci_td *td = list_entry(tmp, struct uhci_td, list); tmp = tmp->next; - list_del_init(&td->remove_list); + list_del_init(&td->list); uhci_free_td(uhci, td); } diff -Nru a/drivers/usb/host/uhci-hcd.h b/drivers/usb/host/uhci-hcd.h --- a/drivers/usb/host/uhci-hcd.h Tue Feb 24 09:59:01 2004 +++ b/drivers/usb/host/uhci-hcd.h Tue Feb 24 09:59:01 2004 @@ -197,7 +197,6 @@ struct urb *urb; struct list_head list; /* P: urb->lock */ - struct list_head remove_list; /* P: uhci->td_remove_list_lock */ int frame; /* for iso: what frame? */ struct list_head fl_list; /* P: uhci->frame_list_lock */ ------------------------------------------------------- SF.Net is sponsored by: Speed Start Your Linux Apps Now. Build and deploy apps & Web services for Linux with a free DVD software kit from IBM. Click Now! http://ads.osdn.com/?ad_id=1356&alloc_id=3438&op=click _______________________________________________ [EMAIL PROTECTED] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel