net/ena: fix dev init with multi-process
The check for proc type in eth_ena_dev_init() should appear before modyfing adapter structure. Calling memset on ena_adapter from secondary process context, was erasing all structure information, and it was causing the crash of the main process. Fixes: 1173fca25af9 ("ena: add polling-mode driver") Cc: stable@dpdk.org Signed-off-by: Michal Krawczyk <mk@semihalf.com>
This commit is contained in:
parent
43d9610e4f
commit
fd97689058
@ -1715,19 +1715,20 @@ static int eth_ena_dev_init(struct rte_eth_dev *eth_dev)
|
||||
static int adapters_found;
|
||||
bool wd_state;
|
||||
|
||||
memset(adapter, 0, sizeof(struct ena_adapter));
|
||||
ena_dev = &adapter->ena_dev;
|
||||
|
||||
eth_dev->dev_ops = &ena_dev_ops;
|
||||
eth_dev->rx_pkt_burst = ð_ena_recv_pkts;
|
||||
eth_dev->tx_pkt_burst = ð_ena_xmit_pkts;
|
||||
eth_dev->tx_pkt_prepare = ð_ena_prep_pkts;
|
||||
adapter->rte_eth_dev_data = eth_dev->data;
|
||||
adapter->rte_dev = eth_dev;
|
||||
|
||||
if (rte_eal_process_type() != RTE_PROC_PRIMARY)
|
||||
return 0;
|
||||
|
||||
memset(adapter, 0, sizeof(struct ena_adapter));
|
||||
ena_dev = &adapter->ena_dev;
|
||||
|
||||
adapter->rte_eth_dev_data = eth_dev->data;
|
||||
adapter->rte_dev = eth_dev;
|
||||
|
||||
pci_dev = RTE_ETH_DEV_TO_PCI(eth_dev);
|
||||
adapter->pdev = pci_dev;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user