summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@quicinc.com>2017-11-08 02:31:25 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2017-11-08 02:31:24 -0800
commitdc774bc378a2adebdd731542dc051b8ec91acf3e (patch)
tree5bfeedf3606398b8bffaadcbd4746a0e66cc74be
parent637b5248c17bff68f425c4ab8c0547f77010334d (diff)
parent43c0d001bcc1e4282cc43c93ffccf42916911fca (diff)
Merge "USB: configfs: Don't send DISCONNECT uevent during unbind"
-rw-r--r--drivers/usb/gadget/configfs.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/usb/gadget/configfs.c b/drivers/usb/gadget/configfs.c
index 255a11f595c4..d9fb5d411d1d 100644
--- a/drivers/usb/gadget/configfs.c
+++ b/drivers/usb/gadget/configfs.c
@@ -87,6 +87,7 @@ struct gadget_info {
struct usb_composite_driver composite;
struct usb_composite_dev cdev;
bool use_os_desc;
+ bool unbinding;
char b_vendor_code;
char qw_sign[OS_STRING_QW_SIGN_LEN];
#ifdef CONFIG_USB_CONFIGFS_UEVENT
@@ -283,9 +284,11 @@ static int unregister_gadget(struct gadget_info *gi)
if (!gi->udc_name)
return -ENODEV;
+ gi->unbinding = true;
ret = usb_gadget_unregister_driver(&gi->composite.gadget_driver);
if (ret)
return ret;
+ gi->unbinding = false;
kfree(gi->udc_name);
gi->udc_name = NULL;
return 0;
@@ -1561,7 +1564,8 @@ static void android_disconnect(struct usb_gadget *gadget)
acc_disconnect();
#endif
gi->connected = 0;
- schedule_work(&gi->work);
+ if (!gi->unbinding)
+ schedule_work(&gi->work);
composite_disconnect(gadget);
}
#endif