diff --git a/drivers/usb/gadget/composite.c b/drivers/usb/gadget/composite.c index 71475b6d8568..9db000013f5d 100644 --- a/drivers/usb/gadget/composite.c +++ b/drivers/usb/gadget/composite.c @@ -1349,8 +1349,7 @@ static ssize_t composite_show_suspended(struct device *dev, static DEVICE_ATTR(suspended, 0444, composite_show_suspended, NULL); -static void -composite_unbind(struct usb_gadget *gadget) +static void __composite_unbind(struct usb_gadget *gadget, bool unbind_driver) { struct usb_composite_dev *cdev = get_gadget_data(gadget); @@ -1367,7 +1366,7 @@ composite_unbind(struct usb_gadget *gadget) struct usb_configuration, list); remove_config(cdev, c); } - if (cdev->driver->unbind) + if (cdev->driver->unbind && unbind_driver) cdev->driver->unbind(cdev); if (cdev->req) { @@ -1380,6 +1379,11 @@ composite_unbind(struct usb_gadget *gadget) set_gadget_data(gadget, NULL); } +static void composite_unbind(struct usb_gadget *gadget) +{ + __composite_unbind(gadget, true); +} + static void update_unchanged_dev_desc(struct usb_device_descriptor *new, const struct usb_device_descriptor *old) { @@ -1488,7 +1492,7 @@ static int composite_bind(struct usb_gadget *gadget, return 0; fail: - composite_unbind(gadget); + __composite_unbind(gadget, false); return status; }