--- y/drivers/usb/gadget/udc/core.c +++ c/drivers/usb/gadget/udc/core.c @@ -1722,10 +1722,11 @@ static int usb_udc_uevent(struct device struct usb_udc *udc = container_of(dev, struct usb_udc, dev); int ret; + mutex_lock(&udc_lock); ret = add_uevent_var(env, "USB_UDC_NAME=%s", udc->gadget->name); if (ret) { dev_err(dev, "failed to add uevent USB_UDC_NAME\n"); - return ret; + goto out; } if (udc->driver) { @@ -1733,11 +1734,12 @@ static int usb_udc_uevent(struct device udc->driver->function); if (ret) { dev_err(dev, "failed to add uevent USB_UDC_DRIVER\n"); - return ret; } } - return 0; +out: + mutex_unlock(&udc_lock); + return ret; } static struct bus_type gadget_bus_type = {