]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
can: usb_8dev: Fix memory leak of priv->cmd_msg_buffer
authorMarc Kleine-Budde <mkl@pengutronix.de>
Thu, 2 Mar 2017 11:03:40 +0000 (12:03 +0100)
committerJiri Slaby <jslaby@suse.cz>
Mon, 13 Mar 2017 20:40:34 +0000 (21:40 +0100)
commit 7c42631376306fb3f34d51fda546b50a9b6dd6ec upstream.

The priv->cmd_msg_buffer is allocated in the probe function, but never
kfree()ed. This patch converts the kzalloc() to resource-managed
kzalloc.

Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
drivers/net/can/usb/usb_8dev.c

index 8becd3d838b5eab2a520be8835c9fba3f3703482..baa822523239fd98a1c75138c17077a8a042f176 100644 (file)
@@ -957,8 +957,8 @@ static int usb_8dev_probe(struct usb_interface *intf,
        for (i = 0; i < MAX_TX_URBS; i++)
                priv->tx_contexts[i].echo_index = MAX_TX_URBS;
 
-       priv->cmd_msg_buffer = kzalloc(sizeof(struct usb_8dev_cmd_msg),
-                                     GFP_KERNEL);
+       priv->cmd_msg_buffer = devm_kzalloc(&intf->dev, sizeof(struct usb_8dev_cmd_msg),
+                                           GFP_KERNEL);
        if (!priv->cmd_msg_buffer)
                goto cleanup_candev;
 
@@ -972,7 +972,7 @@ static int usb_8dev_probe(struct usb_interface *intf,
        if (err) {
                netdev_err(netdev,
                        "couldn't register CAN device: %d\n", err);
-               goto cleanup_cmd_msg_buffer;
+               goto cleanup_candev;
        }
 
        err = usb_8dev_cmd_version(priv, &version);
@@ -993,9 +993,6 @@ static int usb_8dev_probe(struct usb_interface *intf,
 cleanup_unregister_candev:
        unregister_netdev(priv->netdev);
 
-cleanup_cmd_msg_buffer:
-       kfree(priv->cmd_msg_buffer);
-
 cleanup_candev:
        free_candev(netdev);