aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/gadget/function/f_hid.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/usb/gadget/function/f_hid.c')
-rw-r--r--drivers/usb/gadget/function/f_hid.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/usb/gadget/function/f_hid.c b/drivers/usb/gadget/function/f_hid.c
index a95290a1289f..59ab62c92b66 100644
--- a/drivers/usb/gadget/function/f_hid.c
+++ b/drivers/usb/gadget/function/f_hid.c
@@ -621,12 +621,14 @@ static int __init hidg_bind(struct usb_configuration *c, struct usb_function *f)
621 dev = MKDEV(major, hidg->minor); 621 dev = MKDEV(major, hidg->minor);
622 status = cdev_add(&hidg->cdev, dev, 1); 622 status = cdev_add(&hidg->cdev, dev, 1);
623 if (status) 623 if (status)
624 goto fail; 624 goto fail_free_descs;
625 625
626 device_create(hidg_class, NULL, dev, NULL, "%s%d", "hidg", hidg->minor); 626 device_create(hidg_class, NULL, dev, NULL, "%s%d", "hidg", hidg->minor);
627 627
628 return 0; 628 return 0;
629 629
630fail_free_descs:
631 usb_free_all_descriptors(f);
630fail: 632fail:
631 ERROR(f->config->cdev, "hidg_bind FAILED\n"); 633 ERROR(f->config->cdev, "hidg_bind FAILED\n");
632 if (hidg->req != NULL) { 634 if (hidg->req != NULL) {
@@ -635,7 +637,6 @@ fail:
635 usb_ep_free_request(hidg->in_ep, hidg->req); 637 usb_ep_free_request(hidg->in_ep, hidg->req);
636 } 638 }
637 639
638 usb_free_all_descriptors(f);
639 return status; 640 return status;
640} 641}
641 642