diff options
Diffstat (limited to 'drivers/usb/gadget/function/f_rndis.c')
| -rw-r--r-- | drivers/usb/gadget/function/f_rndis.c | 9 | 
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/usb/gadget/function/f_rndis.c b/drivers/usb/gadget/function/f_rndis.c index ddb09dc6d1f2..f13fc6a58565 100644 --- a/drivers/usb/gadget/function/f_rndis.c +++ b/drivers/usb/gadget/function/f_rndis.c @@ -802,8 +802,10 @@ rndis_bind(struct usb_configuration *c, struct usb_function *f)  	if (rndis->manufacturer && rndis->vendorID &&  			rndis_set_param_vendor(rndis->config, rndis->vendorID, -					       rndis->manufacturer)) -		goto fail; +					       rndis->manufacturer)) { +		status = -EINVAL; +		goto fail_free_descs; +	}  	/* NOTE:  all that is done without knowing or caring about  	 * the network link ... which is unavailable to this code @@ -817,10 +819,11 @@ rndis_bind(struct usb_configuration *c, struct usb_function *f)  			rndis->notify->name);  	return 0; +fail_free_descs: +	usb_free_all_descriptors(f);  fail:  	kfree(f->os_desc_table);  	f->os_desc_n = 0; -	usb_free_all_descriptors(f);  	if (rndis->notify_req) {  		kfree(rndis->notify_req->buf);  |