net: hns3: add client node validity judgment
authorPeng Li <lipeng321@huawei.com>
Thu, 5 Sep 2019 13:31:39 +0000 (21:31 +0800)
committerDavid S. Miller <davem@davemloft.net>
Fri, 6 Sep 2019 13:20:34 +0000 (15:20 +0200)
HNS3 driver can only unregister client which included in hnae3_client_list.
This patch adds the client node validity judgment.

Signed-off-by: Peng Li <lipeng321@huawei.com>
Signed-off-by: Huazhong Tan <tanhuazhong@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/hisilicon/hns3/hnae3.c

index 528f6243cdc683c2470252429852cbc17618d7a9..03ca7d925e8e0405e8e8155a64bceb84025fe955 100644 (file)
@@ -138,12 +138,28 @@ EXPORT_SYMBOL(hnae3_register_client);
 
 void hnae3_unregister_client(struct hnae3_client *client)
 {
+       struct hnae3_client *client_tmp;
        struct hnae3_ae_dev *ae_dev;
+       bool existed = false;
 
        if (!client)
                return;
 
        mutex_lock(&hnae3_common_lock);
+
+       list_for_each_entry(client_tmp, &hnae3_client_list, node) {
+               if (client_tmp->type == client->type) {
+                       existed = true;
+                       break;
+               }
+       }
+
+       if (!existed) {
+               mutex_unlock(&hnae3_common_lock);
+               pr_err("client %s does not exist!\n", client->name);
+               return;
+       }
+
        /* un-initialize the client on every matched port */
        list_for_each_entry(ae_dev, &hnae3_ae_dev_list, node) {
                hnae3_uninit_client_instance(client, ae_dev);