On 08/08/2013 09:43 AM, Andrzej Pietrasiewicz wrote: > diff --git a/drivers/usb/gadget/configfs.c b/drivers/usb/gadget/configfs.c > index c5d8f81..8cb5006 100644 > --- a/drivers/usb/gadget/configfs.c > +++ b/drivers/usb/gadget/configfs.c > @@ -866,8 +866,10 @@ static int configfs_composite_bind(struct usb_gadget *gadget, > list_for_each_entry_safe(f, tmp, &cfg->func_list, list) { > list_del(&f->list); > ret = usb_add_function(c, f); > - if (ret) > + if (ret) { > + list_add(&f->list, &cfg->func_list); > goto err_purge_funcs; > + } Since when is this broken? I remember it used to work and usb_add_function() cleaned up after itself in error case. > } > usb_ep_autoconfig_reset(cdev->gadget); > } > Sebastian -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html