The gadget driver unregister/probe is not allowed to reentry
for the same udc.
As the conditions for gadget driver unregister/probe entry,
gadget secure and udc_name status should be synchronized.
Otherwise, in old implement code logic, there is still a chance
to fall into trouble of gadget driver unregister/probe reentry
for the same udc.
Change-Id: I6eb30a36eab84afd656f5bee9678e8d44933c6bc
Signed-off-by: Yonghua Yan <yanyh2@motorola.com>
Reviewed-on: https://gerrit.mot.com/
1287442
SLTApproved: Slta Waiver
SME-Granted: SME Approvals Granted
Tested-by: Jira Key
Reviewed-by: Yuecai Liu <liuyc20@motorola.com>
Reviewed-by: Jianqi Yang <yangj@motorola.com>
Submit-Approved: Jira Key
Reviewed-on: https://gerrit.mot.com/
1376191
Reviewed-by: Xiangpo Zhao <zhaoxp3@motorola.com>
mode = !!mode;
if (mode == gi->secure)
return count;
+
+ mutex_lock(&gi->lock);
+
gi->secure = mode;
- if (!gi->composite.gadget_driver.udc_name)
+ if (!gi->composite.gadget_driver.udc_name) {
+ mutex_unlock(&gi->lock);
return count;
+ }
pr_debug("Secure Store , UDC = %s, secure = %d\n",
gi->composite.gadget_driver.udc_name,
gi->secure);
- mutex_lock(&gi->lock);
if (gi->secure) {
ret = usb_gadget_unregister_driver(
&gi->composite.gadget_driver);