]> git.droids-corp.org - dpdk.git/commitdiff
net/hns3: fix crash from secondary process
authorHuisong Li <lihuisong@huawei.com>
Wed, 1 Jun 2022 03:52:50 +0000 (11:52 +0800)
committerAndrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Thu, 9 Jun 2022 08:58:22 +0000 (10:58 +0200)
If a hns3 device in the secondary process is attached to do probing
operation, 'rx_queues' and 'tx_queues' in dev->data are null in
eth_dev_fp_ops_setup when calling rte_eth_dev_probing_finish. The primary
process calls dev_start to re-setup their fp_ops. But the secondary process
can't call dev_start and has no chance to do it. If the application sends
and receives packets at this time, a segfault will occur. So this patch
uses the MP communication of the PMD to update the fp_ops of the device in
the secondary process.

Fixes: 96c33cfb06cf ("net/hns3: fix Rx/Tx functions update")
Cc: stable@dpdk.org
Signed-off-by: Huisong Li <lihuisong@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
drivers/net/hns3/hns3_rxtx.c

index bbf98fc90ea434cc0baa5ea9f3eff40291783c04..e25a91becf900a902d448e4db67fed9f40ba0e33 100644 (file)
@@ -4409,6 +4409,8 @@ hns3_eth_dev_fp_ops_config(const struct rte_eth_dev *dev)
        fpo[port_id].tx_pkt_prepare = dev->tx_pkt_prepare;
        fpo[port_id].rx_descriptor_status = dev->rx_descriptor_status;
        fpo[port_id].tx_descriptor_status = dev->tx_descriptor_status;
+       fpo[port_id].rxq.data = dev->data->rx_queues;
+       fpo[port_id].txq.data = dev->data->tx_queues;
 }
 
 void