USB: serial: kl5kusb105: fix memleak on open
authorJohan Hovold <johan@kernel.org>
Fri, 4 Dec 2020 08:55:19 +0000 (09:55 +0100)
committerJohan Hovold <johan@kernel.org>
Fri, 4 Dec 2020 11:02:57 +0000 (12:02 +0100)
Fix memory leak of control-message transfer buffer on successful open().

Fixes: 6774d5f53271 ("USB: serial: kl5kusb105: fix open error path")
Cc: stable@vger.kernel.org
Signed-off-by: Johan Hovold <johan@kernel.org>
drivers/usb/serial/kl5kusb105.c

index 5ee48b0..5f6b82e 100644 (file)
@@ -276,12 +276,12 @@ static int  klsi_105_open(struct tty_struct *tty, struct usb_serial_port *port)
        priv->cfg.unknown2 = cfg->unknown2;
        spin_unlock_irqrestore(&priv->lock, flags);
 
+       kfree(cfg);
+
        /* READ_ON and urb submission */
        rc = usb_serial_generic_open(tty, port);
-       if (rc) {
-               retval = rc;
-               goto err_free_cfg;
-       }
+       if (rc)
+               return rc;
 
        rc = usb_control_msg(port->serial->dev,
                             usb_sndctrlpipe(port->serial->dev, 0),
@@ -324,8 +324,6 @@ err_disable_read:
                             KLSI_TIMEOUT);
 err_generic_close:
        usb_serial_generic_close(port);
-err_free_cfg:
-       kfree(cfg);
 
        return retval;
 }