diff options
Diffstat (limited to 'drivers/usb/host/isp1760-hcd.c')
-rw-r--r-- | drivers/usb/host/isp1760-hcd.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/usb/host/isp1760-hcd.c b/drivers/usb/host/isp1760-hcd.c index fc72d44bf787..a35bbddf8968 100644 --- a/drivers/usb/host/isp1760-hcd.c +++ b/drivers/usb/host/isp1760-hcd.c | |||
@@ -1562,11 +1562,14 @@ static int isp1760_urb_enqueue(struct usb_hcd *hcd, struct urb *urb, | |||
1562 | 1562 | ||
1563 | if (!test_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags)) { | 1563 | if (!test_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags)) { |
1564 | retval = -ESHUTDOWN; | 1564 | retval = -ESHUTDOWN; |
1565 | qtd_list_free(&new_qtds); | ||
1565 | goto out; | 1566 | goto out; |
1566 | } | 1567 | } |
1567 | retval = usb_hcd_link_urb_to_ep(hcd, urb); | 1568 | retval = usb_hcd_link_urb_to_ep(hcd, urb); |
1568 | if (retval) | 1569 | if (retval) { |
1570 | qtd_list_free(&new_qtds); | ||
1569 | goto out; | 1571 | goto out; |
1572 | } | ||
1570 | 1573 | ||
1571 | qh = urb->ep->hcpriv; | 1574 | qh = urb->ep->hcpriv; |
1572 | if (qh) { | 1575 | if (qh) { |
@@ -1584,6 +1587,7 @@ static int isp1760_urb_enqueue(struct usb_hcd *hcd, struct urb *urb, | |||
1584 | if (!qh) { | 1587 | if (!qh) { |
1585 | retval = -ENOMEM; | 1588 | retval = -ENOMEM; |
1586 | usb_hcd_unlink_urb_from_ep(hcd, urb); | 1589 | usb_hcd_unlink_urb_from_ep(hcd, urb); |
1590 | qtd_list_free(&new_qtds); | ||
1587 | goto out; | 1591 | goto out; |
1588 | } | 1592 | } |
1589 | list_add_tail(&qh->qh_list, ep_queue); | 1593 | list_add_tail(&qh->qh_list, ep_queue); |
@@ -1683,6 +1687,7 @@ static int isp1760_urb_dequeue(struct usb_hcd *hcd, struct urb *urb, | |||
1683 | list_for_each_entry(qtd, &qh->qtd_list, qtd_list) | 1687 | list_for_each_entry(qtd, &qh->qtd_list, qtd_list) |
1684 | if (qtd->urb == urb) { | 1688 | if (qtd->urb == urb) { |
1685 | dequeue_urb_from_qtd(hcd, qh, qtd); | 1689 | dequeue_urb_from_qtd(hcd, qh, qtd); |
1690 | list_move(&qtd->qtd_list, &qh->qtd_list); | ||
1686 | break; | 1691 | break; |
1687 | } | 1692 | } |
1688 | 1693 | ||
@@ -2176,7 +2181,7 @@ static const struct hc_driver isp1760_hc_driver = { | |||
2176 | 2181 | ||
2177 | int __init init_kmem_once(void) | 2182 | int __init init_kmem_once(void) |
2178 | { | 2183 | { |
2179 | urb_listitem_cachep = kmem_cache_create("isp1760 urb_listitem", | 2184 | urb_listitem_cachep = kmem_cache_create("isp1760_urb_listitem", |
2180 | sizeof(struct urb_listitem), 0, SLAB_TEMPORARY | | 2185 | sizeof(struct urb_listitem), 0, SLAB_TEMPORARY | |
2181 | SLAB_MEM_SPREAD, NULL); | 2186 | SLAB_MEM_SPREAD, NULL); |
2182 | 2187 | ||