|
@@ -2026,6 +2026,8 @@ static DEVICE_ATTR_RO(suspended);
|
|
|
static void __composite_unbind(struct usb_gadget *gadget, bool unbind_driver)
|
|
|
{
|
|
|
struct usb_composite_dev *cdev = get_gadget_data(gadget);
|
|
|
+ struct usb_gadget_strings *gstr = cdev->driver->strings[0];
|
|
|
+ struct usb_string *dev_str = gstr->strings;
|
|
|
|
|
|
/* composite_disconnect() must already have been called
|
|
|
* by the underlying peripheral controller driver!
|
|
@@ -2045,6 +2047,9 @@ static void __composite_unbind(struct usb_gadget *gadget, bool unbind_driver)
|
|
|
|
|
|
composite_dev_cleanup(cdev);
|
|
|
|
|
|
+ if (dev_str[USB_GADGET_MANUFACTURER_IDX].s == cdev->def_manufacturer)
|
|
|
+ dev_str[USB_GADGET_MANUFACTURER_IDX].s = "";
|
|
|
+
|
|
|
kfree(cdev->def_manufacturer);
|
|
|
kfree(cdev);
|
|
|
set_gadget_data(gadget, NULL);
|