staging: gdm7240: fix memory leak on failure path
authorAlexey Khoroshilov <khoroshilov@ispras.ru>
Tue, 8 Oct 2013 20:50:16 +0000 (00:50 +0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 11 Oct 2013 22:23:14 +0000 (15:23 -0700)
init_usb() may fail after some of mux_rxes already allocated.
So we need to release them on the failure path.

Found by Linux Driver Verification project (linuxtesting.org).

Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/gdm724x/gdm_mux.c

index 3c89eaa4e5c7f36b9001ef02f114598393be1b68..62163673976c309e93f004ba5082b80f2a8f240d 100644 (file)
@@ -541,7 +541,7 @@ static int gdm_mux_probe(struct usb_interface *intf, const struct usb_device_id
 
        ret = init_usb(mux_dev);
        if (ret)
-               goto err_free_tty;
+               goto err_free_usb;
 
        tty_dev->priv_dev = (void *)mux_dev;
        tty_dev->send_func = gdm_mux_send;
@@ -565,8 +565,8 @@ static int gdm_mux_probe(struct usb_interface *intf, const struct usb_device_id
 
 err_unregister_tty:
        unregister_lte_tty_device(tty_dev);
+err_free_usb:
        release_usb(mux_dev);
-err_free_tty:
        kfree(tty_dev);
 err_free_mux:
        kfree(mux_dev);