From: "Min Hu (Connor)" <humi...@huawei.com> In current version, procedure of saving eth_dev in hns3 PMD init will be called more than twice, one for primary, the other for secondary. That will cause segmentation fault in Multi-process as eth_dev will be changed in secondary process, which is different from one in primary process. This patch saved eth_dev in dev_private only in primary process, as dev_private is shared by primary process and secondary process.
Fixes: 8929efbc1c46 ("net/hns3: fix FEC state query") Cc: sta...@dpdk.org Signed-off-by: Min Hu (Connor) <humi...@huawei.com> Signed-off-by: Lijun Ou <ouli...@huawei.com> --- drivers/net/hns3/hns3_ethdev.c | 3 +-- drivers/net/hns3/hns3_ethdev_vf.c | 1 + 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/hns3/hns3_ethdev.c b/drivers/net/hns3/hns3_ethdev.c index 7c34e38..f49b779 100644 --- a/drivers/net/hns3/hns3_ethdev.c +++ b/drivers/net/hns3/hns3_ethdev.c @@ -6106,8 +6106,6 @@ hns3_dev_init(struct rte_eth_dev *eth_dev) PMD_INIT_FUNC_TRACE(); - hns->eth_dev = eth_dev; - eth_dev->process_private = (struct hns3_process_private *) rte_zmalloc_socket("hns3_filter_list", sizeof(struct hns3_process_private), @@ -6134,6 +6132,7 @@ hns3_dev_init(struct rte_eth_dev *eth_dev) return 0; } + hns->eth_dev = eth_dev; eth_dev->data->dev_flags |= RTE_ETH_DEV_AUTOFILL_QUEUE_XSTATS; ret = hns3_mp_init_primary(); diff --git a/drivers/net/hns3/hns3_ethdev_vf.c b/drivers/net/hns3/hns3_ethdev_vf.c index f09cabc..9c382bf 100644 --- a/drivers/net/hns3/hns3_ethdev_vf.c +++ b/drivers/net/hns3/hns3_ethdev_vf.c @@ -2753,6 +2753,7 @@ hns3vf_dev_init(struct rte_eth_dev *eth_dev) return 0; } + hns->eth_dev = eth_dev; eth_dev->data->dev_flags |= RTE_ETH_DEV_AUTOFILL_QUEUE_XSTATS; ret = hns3_mp_init_primary(); -- 2.7.4