diff --git a/[refs] b/[refs] index 889f8e006625..a98a90f751d4 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d185039f7982eb82cf8d03b6fb6689587ca5af24 +refs/heads/master: 7f2a9268b458b693160f02f0df2bafb83e128750 diff --git a/trunk/drivers/usb/gadget/f_midi.c b/trunk/drivers/usb/gadget/f_midi.c index b978c5d15cb4..b265ee8fa5aa 100644 --- a/trunk/drivers/usb/gadget/f_midi.c +++ b/trunk/drivers/usb/gadget/f_midi.c @@ -882,18 +882,24 @@ f_midi_bind(struct usb_configuration *c, struct usb_function *f) * both speeds */ /* copy descriptors, and track endpoint copies */ + f->descriptors = usb_copy_descriptors(midi_function); + if (!f->descriptors) + goto fail_f_midi; if (gadget_is_dualspeed(c->cdev->gadget)) { bulk_in_desc.wMaxPacketSize = cpu_to_le16(512); bulk_out_desc.wMaxPacketSize = cpu_to_le16(512); f->hs_descriptors = usb_copy_descriptors(midi_function); - } else { - f->descriptors = usb_copy_descriptors(midi_function); + if (!f->hs_descriptors) + goto fail_f_midi; } kfree(midi_function); return 0; +fail_f_midi: + kfree(midi_function); + usb_free_descriptors(f->hs_descriptors); fail: /* we might as well release our claims on endpoints */ if (midi->out_ep)