On 12/07/2016 04:31 PM, Alan Stern wrote:
> On Wed, 7 Dec 2016, Krzysztof Opasiak wrote:
> 
>> If we found a matching driver but its bind() function failed for some
>> reason, let's continue our search as there may be some other gadget
>> pending on a list which bind() will succeed for this udc.
>>
>> Reported-by: Alan Stern <st...@rowland.harvard.edu>
>> Signed-off-by: Krzysztof Opasiak <k.opas...@samsung.com>
>> ---
>>  drivers/usb/gadget/udc/core.c | 12 +++++++++---
>>  1 file changed, 9 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/usb/gadget/udc/core.c b/drivers/usb/gadget/udc/core.c
>> index a83e6017a8b0..b02a166ba380 100644
>> --- a/drivers/usb/gadget/udc/core.c
>> +++ b/drivers/usb/gadget/udc/core.c
>> @@ -1083,16 +1083,22 @@ static void usb_udc_nop_release(struct device *dev)
>>  /* should be called with udc_lock held */
>>  static int check_pending_gadget_drivers(struct usb_udc *udc)
>>  {
>> -    struct usb_gadget_driver *driver;
>> +    struct usb_gadget_driver *driver, *tmp;
>>      int ret = 0;
>>  
>> -    list_for_each_entry(driver, &gadget_driver_pending_list, pending)
>> +    list_for_each_entry_safe(driver, tmp, &gadget_driver_pending_list,
>> +                             pending)
>>              if (!driver->udc_name || strcmp(driver->udc_name,
>>                                              dev_name(&udc->dev)) == 0) {
>>                      ret = udc_bind_to_driver(udc, driver);
>> +                    if (ret == 0)
>> +                            break;
>>                      if (ret != -EPROBE_DEFER)
>>                              list_del_init(&driver->pending);
> 
> These two tests are in the wrong order.  You should call 
> list_del_init() even when ret == 0.

Good catch. I fixed this in v2.

Thank you,
-- 
Krzysztof Opasiak
Samsung R&D Institute Poland
Samsung Electronics
--
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