macvlan: unregister net device when netdev_upper_dev_link() fails
authorCong Wang <cwang@twopensource.com>
Tue, 11 Feb 2014 23:51:29 +0000 (15:51 -0800)
committerDavid S. Miller <davem@davemloft.net>
Thu, 13 Feb 2014 22:08:28 +0000 (17:08 -0500)
rtnl_newlink() doesn't unregister it for us on failure.

Cc: Patrick McHardy <kaber@trash.net>
Cc: David S. Miller <davem@davemloft.net>
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
Signed-off-by: Cong Wang <cwang@twopensource.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/macvlan.c

index 8433de4509c75a35cb65e7abdacb4f8968cb4008..a5d21893670d2692cf73da15113a2f116c3f0352 100644 (file)
@@ -879,14 +879,15 @@ int macvlan_common_newlink(struct net *src_net, struct net_device *dev,
        dev->priv_flags |= IFF_MACVLAN;
        err = netdev_upper_dev_link(lowerdev, dev);
        if (err)
-               goto destroy_port;
-
+               goto unregister_netdev;
 
        list_add_tail_rcu(&vlan->list, &port->vlans);
        netif_stacked_transfer_operstate(lowerdev, dev);
 
        return 0;
 
+unregister_netdev:
+       unregister_netdevice(dev);
 destroy_port:
        port->count -= 1;
        if (!port->count)