diff options
Diffstat (limited to 'drivers/usb/gadget/function/f_hid.c')
| -rw-r--r-- | drivers/usb/gadget/function/f_hid.c | 5 | 
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)  	dev = MKDEV(major, hidg->minor);  	status = cdev_add(&hidg->cdev, dev, 1);  	if (status) -		goto fail; +		goto fail_free_descs;  	device_create(hidg_class, NULL, dev, NULL, "%s%d", "hidg", hidg->minor);  	return 0; +fail_free_descs: +	usb_free_all_descriptors(f);  fail:  	ERROR(f->config->cdev, "hidg_bind FAILED\n");  	if (hidg->req != NULL) { @@ -635,7 +637,6 @@ fail:  			usb_ep_free_request(hidg->in_ep, hidg->req);  	} -	usb_free_all_descriptors(f);  	return status;  }  | 
