Peter Chen <peter.c...@freescale.com> writes:

> @@ -348,23 +356,14 @@ static void usb_gadget_remove_driver(struct usb_udc 
> *udc)
>   */
>  void usb_del_gadget_udc(struct usb_gadget *gadget)
>  {
> -     struct usb_udc          *udc = NULL;
> -
> -     mutex_lock(&udc_lock);
> -     list_for_each_entry(udc, &udc_list, list)
> -             if (udc->gadget == gadget)
> -                     goto found;
> -
> -     dev_err(gadget->dev.parent, "gadget not registered.\n");
> -     mutex_unlock(&udc_lock);
> +     struct usb_udc *udc = usb_gadget_find_udc(gadget);
>  
> -     return;
> +     if (!udc)
> +             return;
>  
> -found:
>       dev_vdbg(gadget->dev.parent, "unregistering gadget\n");
>  
>       list_del(&udc->list);
> -     mutex_unlock(&udc_lock);

I believe udc->list linkage to udc_list still should be protected with
udc_lock, otherwise this will race with usb_add_gadget_udc_release().

Regards,
--
Alex
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to