usb: configfs: synchronize the secure and udc_name state

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/1338870
Reviewed-by: Huosheng Liao <liaohs@motorola.com>
Reviewed-on: https://gerrit.mot.com/1449122
Reviewed-on: https://gerrit.mot.com/1511640
Reviewed-by: Zonghua Liu <a17671@motorola.com>
Reviewed-by: Wang Wang <wangwang1@lenovo.com>
This commit is contained in:
Yonghua Yan authored and Gilberto Gambugge committed 2023-06-01 00:47:06 -03:00
1 parent a4fd173df1
commit a3db809d7c
1 file changed
+6 -2
+6 -2
View File
@@ -1791,15 +1791,19 @@ static ssize_t secure_store(struct device *pdev, struct device_attribute *attr,
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);