diff options
| author | Linux Build Service Account <lnxbuild@quicinc.com> | 2017-11-08 02:31:25 -0800 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2017-11-08 02:31:24 -0800 |
| commit | dc774bc378a2adebdd731542dc051b8ec91acf3e (patch) | |
| tree | 5bfeedf3606398b8bffaadcbd4746a0e66cc74be | |
| parent | 637b5248c17bff68f425c4ab8c0547f77010334d (diff) | |
| parent | 43c0d001bcc1e4282cc43c93ffccf42916911fca (diff) | |
Merge "USB: configfs: Don't send DISCONNECT uevent during unbind"
| -rw-r--r-- | drivers/usb/gadget/configfs.c | 6 |
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 |
