aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrzej Pietrasiewicz <andrzej.p@samsung.com>2015-07-03 14:02:29 +0200
committerBadhri Jagan Sridharan <Badhri@google.com>2015-09-04 12:25:03 -0700
commitf803e26b70f4539040503994a160e44238ec229f (patch)
treec34dc9ac40eea82a059ad51e360bf87daf4b2e17
parent61ef7b1f6326cffc724cd59934fc16be2bce7e68 (diff)
usb: gadget: f_midi: fix error recovery path
In case kstrdup() fails the resources to release are midi->in_port[] and midi. No cards have been registered, so no need to unregister any. BACKPORT FROM MAINLINE KERNEL Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@samsung.com> Signed-off-by: Felipe Balbi <balbi@ti.com> Change-Id: Idf14ca5aded888fe7c56d8b06763b009800827f5
-rw-r--r--drivers/usb/gadget/function/f_midi.c4
1 files changed, 1 insertions, 3 deletions
diff --git a/drivers/usb/gadget/function/f_midi.c b/drivers/usb/gadget/function/f_midi.c
index 6316aa5b1c49..ad50a67c1465 100644
--- a/drivers/usb/gadget/function/f_midi.c
+++ b/drivers/usb/gadget/function/f_midi.c
@@ -1145,7 +1145,7 @@ static struct usb_function *f_midi_alloc(struct usb_function_instance *fi)
if (opts->id && !midi->id) {
status = -ENOMEM;
mutex_unlock(&opts->lock);
- goto kstrdup_fail;
+ goto setup_fail;
}
midi->in_ports = opts->in_ports;
midi->out_ports = opts->out_ports;
@@ -1164,8 +1164,6 @@ static struct usb_function *f_midi_alloc(struct usb_function_instance *fi)
return &midi->func;
-kstrdup_fail:
- f_midi_unregister_card(midi);
setup_fail:
for (--i; i >= 0; i--)
kfree(midi->in_port[i]);