From: Gao Feng <f...@ikuai8.com>

When netdev_upper_dev_unlink failed in ipvlan_link_new, need to
unlink the ipvlan dev with upper dev.

Signed-off-by: Gao Feng <f...@ikuai8.com>
---
 v2: Rename the label to unlink_netdev, per Mahesh Bandewar
 v1: Initial patch

 drivers/net/ipvlan/ipvlan_main.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ipvlan/ipvlan_main.c b/drivers/net/ipvlan/ipvlan_main.c
index 0fef178..dfbc4ef 100644
--- a/drivers/net/ipvlan/ipvlan_main.c
+++ b/drivers/net/ipvlan/ipvlan_main.c
@@ -546,13 +546,15 @@ static int ipvlan_link_new(struct net *src_net, struct 
net_device *dev,
        }
        err = ipvlan_set_port_mode(port, mode);
        if (err) {
-               goto unregister_netdev;
+               goto unlink_netdev;
        }
 
        list_add_tail_rcu(&ipvlan->pnode, &port->ipvlans);
        netif_stacked_transfer_operstate(phy_dev, dev);
        return 0;
 
+unlink_netdev:
+       netdev_upper_dev_unlink(phy_dev, dev);
 unregister_netdev:
        unregister_netdevice(dev);
 destroy_ipvlan_port:
-- 
1.9.1


Reply via email to