From: Peng Li <[email protected]>

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 <[email protected]>
Signed-off-by: Huazhong Tan <[email protected]>
---
 drivers/net/ethernet/hisilicon/hns3/hnae3.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/drivers/net/ethernet/hisilicon/hns3/hnae3.c 
b/drivers/net/ethernet/hisilicon/hns3/hnae3.c
index 528f624..6aa5257 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hnae3.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hnae3.c
@@ -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 not existed!\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);
-- 
2.7.4

Reply via email to