From 014dce207e7118b4c5a7a5056eac0da3507e1328 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Mon, 22 Oct 2012 22:15:03 +0200 Subject: [PATCH] --- yaml --- r: 338627 b: refs/heads/master c: 7f2a9268b458b693160f02f0df2bafb83e128750 h: refs/heads/master i: 338625: 45cb11127ffef80f58f2b1006bb16ebd3fb4b17f 338623: c126c1b8d4c6b06863dd1026f9fc67c74b5a2610 v: v3 --- [refs] | 2 +- trunk/drivers/usb/gadget/f_midi.c | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) 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)