diff options
Diffstat (limited to 'drivers/usb/gadget/composite.c')
| -rw-r--r-- | drivers/usb/gadget/composite.c | 11 | 
1 files changed, 5 insertions, 6 deletions
| diff --git a/drivers/usb/gadget/composite.c b/drivers/usb/gadget/composite.c index 49d685ad0da9..45b554032332 100644 --- a/drivers/usb/gadget/composite.c +++ b/drivers/usb/gadget/composite.c @@ -315,6 +315,9 @@ void usb_remove_function(struct usb_configuration *c, struct usb_function *f)  	list_del(&f->list);  	if (f->unbind)  		f->unbind(c, f); + +	if (f->bind_deactivated) +		usb_function_activate(f);  }  EXPORT_SYMBOL_GPL(usb_remove_function); @@ -956,12 +959,8 @@ static void remove_config(struct usb_composite_dev *cdev,  		f = list_first_entry(&config->functions,  				struct usb_function, list); -		list_del(&f->list); -		if (f->unbind) { -			DBG(cdev, "unbind function '%s'/%p\n", f->name, f); -			f->unbind(config, f); -			/* may free memory for "f" */ -		} + +		usb_remove_function(config, f);  	}  	list_del(&config->list);  	if (config->unbind) { | 
