net: hns3: fix improper error handling for hns3_client_start
authorHuazhong Tan <tanhuazhong@huawei.com>
Sat, 23 Feb 2019 09:22:19 +0000 (17:22 +0800)
committerDavid S. Miller <davem@davemloft.net>
Mon, 25 Feb 2019 04:27:50 +0000 (20:27 -0800)
If hns3_client_start() failed in the hns3_client_init(),
register_dev() should be undo in its error handling.

Fixes: a6d818e31d08 ("net: hns3: Add vport alive state checking support")
Signed-off-by: Huazhong Tan <tanhuazhong@huawei.com>
Signed-off-by: Peng Li <lipeng321@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/hisilicon/hns3/hns3_enet.c

index 9f9a52d74f7ac49ba1d11179623fd268582db6ca..3cb43b1f1c2e69d590c4ad9361b1423fc7a7aefc 100644 (file)
@@ -3656,7 +3656,7 @@ static int hns3_client_init(struct hnae3_handle *handle)
        ret = hns3_client_start(handle);
        if (ret) {
                dev_err(priv->dev, "hns3_client_start fail! ret=%d\n", ret);
-                       goto out_reg_netdev_fail;
+                       goto out_client_start;
        }
 
        hns3_dcbnl_setup(handle);
@@ -3670,6 +3670,8 @@ static int hns3_client_init(struct hnae3_handle *handle)
 
        return ret;
 
+out_client_start:
+       unregister_netdev(netdev);
 out_reg_netdev_fail:
        hns3_uninit_phy(netdev);
 out_init_phy: