/* reverse of qh_urb_transaction: free a list of TDs. used for cleanup after errors, before HC sees an URB's TDs.  */
static void qtd_list_free(struct ehci_hcd *ehci, struct urb *urb, struct list_head *qtd_list)
/* reverse of qh_urb_transaction: free a list of TDs. used for cleanup after errors, before HC sees an URB's TDs.  */
static void qtd_list_free(struct ehci_hcd *ehci, struct urb *urb, struct list_head *qtd_list)
{
    struct list_head    *entry, *temp;
    list_for_each_safe (entry, temp, qtd_list) {
        struct ehci_qtd *qtd;
        qtd = list_entry (entry, struct ehci_qtd, qtd_list);
        list_del (&qtd->qtd_list);
        ehci_qtd_free (ehci, qtd);
    }
}