Browse Source

macvlan: unregister net device when netdev_upper_dev_link() fails

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>
Cong Wang 11 years ago
parent
commit
da37705cef
1 changed files with 3 additions and 2 deletions
  1. 3 2
      drivers/net/macvlan.c

+ 3 - 2
drivers/net/macvlan.c

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