Commit 1a31cc86 authored by Gao Feng's avatar Gao Feng Committed by David S. Miller

driver: ipvlan: Unlink the upper dev when ipvlan_link_new failed

When netdev_upper_dev_unlink failed in ipvlan_link_new, need to
unlink the ipvlan dev with upper dev.
Signed-off-by: default avatarGao Feng <fgao@ikuai8.com>
Acked-by: default avatarMahesh Bandewar <maheshb@google.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 93a97c50
...@@ -546,13 +546,15 @@ static int ipvlan_link_new(struct net *src_net, struct net_device *dev, ...@@ -546,13 +546,15 @@ static int ipvlan_link_new(struct net *src_net, struct net_device *dev,
} }
err = ipvlan_set_port_mode(port, mode); err = ipvlan_set_port_mode(port, mode);
if (err) { if (err) {
goto unregister_netdev; goto unlink_netdev;
} }
list_add_tail_rcu(&ipvlan->pnode, &port->ipvlans); list_add_tail_rcu(&ipvlan->pnode, &port->ipvlans);
netif_stacked_transfer_operstate(phy_dev, dev); netif_stacked_transfer_operstate(phy_dev, dev);
return 0; return 0;
unlink_netdev:
netdev_upper_dev_unlink(phy_dev, dev);
unregister_netdev: unregister_netdev:
unregister_netdevice(dev); unregister_netdevice(dev);
destroy_ipvlan_port: destroy_ipvlan_port:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment