This ensures that at any point on the function if a goto to setup_fail is
made, it will unlock the mutex.

Signed-off-by: Felipe F. Tonello <e...@felipetonello.com>
---
 drivers/usb/gadget/function/f_midi.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/usb/gadget/function/f_midi.c 
b/drivers/usb/gadget/function/f_midi.c
index b7d3f5a10bf0..1255f8a898d0 100644
--- a/drivers/usb/gadget/function/f_midi.c
+++ b/drivers/usb/gadget/function/f_midi.c
@@ -1251,7 +1251,6 @@ static struct usb_function *f_midi_alloc(struct 
usb_function_instance *fi)
 
                if (!port) {
                        status = -ENOMEM;
-                       mutex_unlock(&opts->lock);
                        goto setup_fail;
                }
 
@@ -1264,7 +1263,6 @@ static struct usb_function *f_midi_alloc(struct 
usb_function_instance *fi)
        midi->id = kstrdup(opts->id, GFP_KERNEL);
        if (opts->id && !midi->id) {
                status = -ENOMEM;
-               mutex_unlock(&opts->lock);
                goto setup_fail;
        }
        midi->in_ports = opts->in_ports;
@@ -1293,6 +1291,7 @@ static struct usb_function *f_midi_alloc(struct 
usb_function_instance *fi)
        return &midi->func;
 
 setup_fail:
+       mutex_unlock(&opts->lock);
        for (--i; i >= 0; i--)
                kfree(midi->in_port[i]);
        kfree(midi);
-- 
2.6.4

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