Krzysztof:

Your patch doesn't address a bug that has been present in
usb_add_gadget_udc_release() for some time.  If the bind callback fails
with any error other than -EPROBE_DEFER, the driver remains unbound to
the gadget but it is not added back on to the
gadget_driver_pending_list.  As a result, when the driver is
unregistered, the list_del() call will cause problems.

There's a good reason not to add the driver back on to the list: If 
it's not working then we don't want to keep trying to probe it over and 
over again.  I think the best thing to do would be 
list_del_init(&driver->pending), so that at least unregistration won't 
cause an oops.

There's another thing.  If the bind callback fails, why not continue 
the loop in check_pending_gadget_drivers()?  Maybe another pending 
driver will succeed.  (Of course, to do this would require using 
list_for_each_entry_safe instead of list_for_each_entry.)

Alan Stern

--
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