Commit 544a7bcd authored by Lijun Ou's avatar Lijun Ou Committed by David S. Miller

net: hns3: Fixes initalization of RoCE handle and makes it conditional

When register a RoCE client with hnae3vf device, it needs to judge
the device whether support RoCE vf function. Otherwise, it will
lead to calltrace when RoCE is not support vf function and remove
roce device.

The calltrace as follows:
[   93.156614] Unable to handle kernel NULL pointer dereference at virtual address 00000015
 <SNIP>
[   93.278784] Call trace:
[   93.278788]  hnae3_match_n_instantiate+0x24/0xd8 [hnae3]
[   93.278790]  hnae3_register_client+0xcc/0x150 [hnae3]
[   93.278801]  hns_roce_hw_v2_init+0x18/0x1000 [hns_roce_hw_v2]
[   93.278805]  do_one_initcall+0x58/0x160
[   93.278807]  do_init_module+0x64/0x1d8
[   93.278809]  load_module+0x135c/0x15c8
[   93.278811]  SyS_finit_module+0x100/0x118
[   93.278816]  __sys_trace_return+0x0/0x4
[   93.278827] Code: aa0003f5 12001c56 aa1e03e0 d503201f (b9402660)

Fixes: e2cb1dec ("net: hns3: Add HNS3 VF HCL(Hardware Compatibility Layer) Support")
Reported-by: default avatarXinwei Kong <kong.kongxinwei@hisilicon.com>
Reported-by: default avatarZhou Wang <wangzhou1@hisilicon.com>
Signed-off-by: default avatarLijun Ou <oulijun@huawei.com>
Signed-off-by: default avatarZhou Wang <wangzhou1@hisilicon.com>
Signed-off-by: default avatarSalil Mehta <salil.mehta@huawei.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent f6f75abc
...@@ -1500,10 +1500,12 @@ static int hclgevf_init_instance(struct hclgevf_dev *hdev, ...@@ -1500,10 +1500,12 @@ static int hclgevf_init_instance(struct hclgevf_dev *hdev,
return ret; return ret;
break; break;
case HNAE3_CLIENT_ROCE: case HNAE3_CLIENT_ROCE:
hdev->roce_client = client; if (hnae3_dev_roce_supported(hdev)) {
hdev->roce.client = client; hdev->roce_client = client;
hdev->roce.client = client;
}
if (hdev->roce_client && hnae3_dev_roce_supported(hdev)) { if (hdev->roce_client && hdev->nic_client) {
ret = hclgevf_init_roce_base_info(hdev); ret = hclgevf_init_roce_base_info(hdev);
if (ret) if (ret)
return ret; return ret;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment