aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/host/isp1760-hcd.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/usb/host/isp1760-hcd.c')
-rw-r--r--drivers/usb/host/isp1760-hcd.c9
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
2177int __init init_kmem_once(void) 2182int __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