net: fix a leak in register_netdevice()
authorDan Carpenter <dan.carpenter@oracle.com>
Tue, 3 Dec 2019 14:12:39 +0000 (17:12 +0300)
committerDavid S. Miller <davem@davemloft.net>
Tue, 3 Dec 2019 19:19:29 +0000 (11:19 -0800)
We have to free "dev->name_node" on this error path.

Fixes: ff92741270bf ("net: introduce name_node struct to be used in hashlist")
Reported-by: syzbot+6e13e65ffbaa33757bcb@syzkaller.appspotmail.com
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/core/dev.c

index 46580b2..e7c027f 100644 (file)
@@ -9246,7 +9246,7 @@ int register_netdevice(struct net_device *dev)
                if (ret) {
                        if (ret > 0)
                                ret = -EIO;
-                       goto out;
+                       goto err_free_name;
                }
        }
 
@@ -9361,12 +9361,12 @@ out:
        return ret;
 
 err_uninit:
-       if (dev->name_node)
-               netdev_name_node_free(dev->name_node);
        if (dev->netdev_ops->ndo_uninit)
                dev->netdev_ops->ndo_uninit(dev);
        if (dev->priv_destructor)
                dev->priv_destructor(dev);
+err_free_name:
+       netdev_name_node_free(dev->name_node);
        goto out;
 }
 EXPORT_SYMBOL(register_netdevice);