uhci_remove_td(uhci, td); 
static void uhci_destroy_urb_priv(struct uhci_hcd *uhci, struct urb *urb){	struct uhci_td *td, *tmp;	struct urb_priv *urbp;	urbp = (struct urb_priv *)urb->hcpriv;	if (!urbp)		return;	if (!list_empty(&urbp->urb_list))		dev_warn(uhci_dev(uhci), "urb %p still on uhci->urb_list "				"or uhci->remove_list!\n", urb);	uhci_get_current_frame_number(uhci);	if (uhci->frame_number + uhci->is_stopped != uhci->td_remove_age) {		uhci_free_pending_tds(uhci);		uhci->td_remove_age = uhci->frame_number;	}	/* Check to see if the remove list is empty. Set the IOC bit */	/* to force an interrupt so we can remove the TD's*/	if (list_empty(&uhci->td_remove_list))		uhci_set_next_interrupt(uhci);	list_for_each_entry_safe(td, tmp, &urbp->td_list, list) {		uhci_remove_td_from_urb(td);		uhci_remove_td(uhci, td);		list_add(&td->remove_list, &uhci->td_remove_list);	}	urb->hcpriv = NULL;	kmem_cache_free(uhci_up_cachep, urbp);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/b81d34363c0b17c47f4ef63d5888c4f47f315d29/uhci-q.c/buggy/drivers/usb/host/uhci-q.c