From: Yonglong Liu <liuyongl...@huawei.com>

These functions are exported, add pointer checking at the beginning
can make them more safe.

Signed-off-by: Yonglong Liu <liuyongl...@huawei.com>
Signed-off-by: Peng Li <lipeng...@huawei.com>
Signed-off-by: Huazhong Tan <tanhuazh...@huawei.com>
---
 drivers/net/ethernet/hisilicon/hns3/hnae3.c | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/drivers/net/ethernet/hisilicon/hns3/hnae3.c 
b/drivers/net/ethernet/hisilicon/hns3/hnae3.c
index 50011aa..9f5349b 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hnae3.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hnae3.c
@@ -32,6 +32,9 @@ static bool hnae3_client_match(enum hnae3_client_type 
client_type,
 void hnae3_set_client_init_flag(struct hnae3_client *client,
                                struct hnae3_ae_dev *ae_dev, int inited)
 {
+       if (!client || !ae_dev)
+               return;
+
        switch (client->type) {
        case HNAE3_CLIENT_KNIC:
                hnae3_set_bit(ae_dev->flag, HNAE3_KNIC_CLIENT_INITED_B, inited);
@@ -109,6 +112,9 @@ int hnae3_register_client(struct hnae3_client *client)
        struct hnae3_ae_dev *ae_dev;
        int ret = 0;
 
+       if (!client)
+               return -ENODEV;
+
        mutex_lock(&hnae3_common_lock);
        /* one system should only have one client for every type */
        list_for_each_entry(client_tmp, &hnae3_client_list, node) {
@@ -141,6 +147,9 @@ void hnae3_unregister_client(struct hnae3_client *client)
 {
        struct hnae3_ae_dev *ae_dev;
 
+       if (!client)
+               return;
+
        mutex_lock(&hnae3_common_lock);
        /* un-initialize the client on every matched port */
        list_for_each_entry(ae_dev, &hnae3_ae_dev_list, node) {
@@ -163,6 +172,9 @@ void hnae3_register_ae_algo(struct hnae3_ae_algo *ae_algo)
        struct hnae3_client *client;
        int ret = 0;
 
+       if (!ae_algo)
+               return;
+
        mutex_lock(&hnae3_common_lock);
 
        list_add_tail(&ae_algo->node, &hnae3_ae_algo_list);
@@ -209,6 +221,9 @@ void hnae3_unregister_ae_algo(struct hnae3_ae_algo *ae_algo)
        struct hnae3_ae_dev *ae_dev;
        struct hnae3_client *client;
 
+       if (!ae_algo)
+               return;
+
        mutex_lock(&hnae3_common_lock);
        /* Check if there are matched ae_dev */
        list_for_each_entry(ae_dev, &hnae3_ae_dev_list, node) {
@@ -245,6 +260,9 @@ int hnae3_register_ae_dev(struct hnae3_ae_dev *ae_dev)
        struct hnae3_client *client;
        int ret = 0;
 
+       if (!ae_dev)
+               return -ENODEV;
+
        mutex_lock(&hnae3_common_lock);
 
        list_add_tail(&ae_dev->node, &hnae3_ae_dev_list);
@@ -307,6 +325,9 @@ void hnae3_unregister_ae_dev(struct hnae3_ae_dev *ae_dev)
        struct hnae3_ae_algo *ae_algo;
        struct hnae3_client *client;
 
+       if (!ae_dev)
+               return;
+
        mutex_lock(&hnae3_common_lock);
        /* Check if there are matched ae_algo */
        list_for_each_entry(ae_algo, &hnae3_ae_algo_list, node) {
-- 
2.7.4

Reply via email to