usb: gadget: configfs: Synchronizing bind/unbind using mutex lock

Synchronization is required because bind/unbind can happen in two
different contexts. For example, function unbind due to
unregister_gadget_item can race with bind which is initiated from
sysfs.

Change-Id: Iec93a9d4cb2a10b833cbba0d5256b64161147de2
Signed-off-by: Hemant Kumar <hemantk@codeaurora.org>
This commit is contained in:
Hemant Kumar 2016-08-05 15:57:24 -07:00
parent dfe8b29ad1
commit 9b68fb8b48

View file

@ -1738,7 +1738,10 @@ void unregister_gadget_item(struct config_item *item)
{ {
struct gadget_info *gi = to_gadget_info(item); struct gadget_info *gi = to_gadget_info(item);
/* to protect race with gadget_dev_desc_UDC_store*/
mutex_lock(&gi->lock);
unregister_gadget(gi); unregister_gadget(gi);
mutex_unlock(&gi->lock);
} }
EXPORT_SYMBOL_GPL(unregister_gadget_item); EXPORT_SYMBOL_GPL(unregister_gadget_item);