drivers/net: fix crash in secondary process
Calling rte_eth_dev_info_get() on secondary process cause a crash
because eth_dev->device is not set properly.
Fixes: ee27edbe0c
("drivers/net: share vdev data to secondary process")
Cc: stable@dpdk.org
Reported-by: Vipin Varghese <vipin.varghese@intel.com>
Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
Reviewed-by: Qi Zhang <qi.z.zhang@intel.com>
This commit is contained in:
parent
0989161b26
commit
d1c3ab220a
@ -936,6 +936,7 @@ rte_pmd_af_packet_probe(struct rte_vdev_device *dev)
|
||||
}
|
||||
/* TODO: request info from primary to set up Rx and Tx */
|
||||
eth_dev->dev_ops = &ops;
|
||||
eth_dev->device = &dev->device;
|
||||
rte_eth_dev_probing_finish(eth_dev);
|
||||
return 0;
|
||||
}
|
||||
|
@ -3184,6 +3184,7 @@ bond_probe(struct rte_vdev_device *dev)
|
||||
}
|
||||
/* TODO: request info from primary to set up Rx and Tx */
|
||||
eth_dev->dev_ops = &default_dev_ops;
|
||||
eth_dev->device = &dev->device;
|
||||
rte_eth_dev_probing_finish(eth_dev);
|
||||
return 0;
|
||||
}
|
||||
|
@ -1389,6 +1389,8 @@ rte_dpaa_probe(struct rte_dpaa_driver *dpaa_drv,
|
||||
eth_dev = rte_eth_dev_attach_secondary(dpaa_dev->name);
|
||||
if (!eth_dev)
|
||||
return -ENOMEM;
|
||||
eth_dev->device = &dpaa_dev->device;
|
||||
eth_dev->dev_ops = &dpaa_devops;
|
||||
rte_eth_dev_probing_finish(eth_dev);
|
||||
return 0;
|
||||
}
|
||||
|
@ -328,6 +328,7 @@ rte_pmd_failsafe_probe(struct rte_vdev_device *vdev)
|
||||
}
|
||||
/* TODO: request info from primary to set up Rx and Tx */
|
||||
eth_dev->dev_ops = &failsafe_ops;
|
||||
eth_dev->device = &vdev->device;
|
||||
rte_eth_dev_probing_finish(eth_dev);
|
||||
return 0;
|
||||
}
|
||||
|
@ -420,6 +420,7 @@ eth_kni_probe(struct rte_vdev_device *vdev)
|
||||
}
|
||||
/* TODO: request info from primary to set up Rx and Tx */
|
||||
eth_dev->dev_ops = ð_kni_ops;
|
||||
eth_dev->device = &vdev->device;
|
||||
rte_eth_dev_probing_finish(eth_dev);
|
||||
return 0;
|
||||
}
|
||||
|
@ -624,6 +624,7 @@ rte_pmd_null_probe(struct rte_vdev_device *dev)
|
||||
}
|
||||
/* TODO: request info from primary to set up Rx and Tx */
|
||||
eth_dev->dev_ops = &ops;
|
||||
eth_dev->device = &dev->device;
|
||||
rte_eth_dev_probing_finish(eth_dev);
|
||||
return 0;
|
||||
}
|
||||
|
@ -1015,6 +1015,8 @@ octeontx_create(struct rte_vdev_device *dev, int port, uint8_t evdev,
|
||||
if (eth_dev == NULL)
|
||||
return -ENODEV;
|
||||
|
||||
eth_dev->dev_ops = &octeontx_dev_ops;
|
||||
eth_dev->device = &dev->device;
|
||||
eth_dev->tx_pkt_burst = octeontx_xmit_pkts;
|
||||
eth_dev->rx_pkt_burst = octeontx_recv_pkts;
|
||||
rte_eth_dev_probing_finish(eth_dev);
|
||||
@ -1183,6 +1185,7 @@ octeontx_probe(struct rte_vdev_device *dev)
|
||||
}
|
||||
/* TODO: request info from primary to set up Rx and Tx */
|
||||
eth_dev->dev_ops = &octeontx_dev_ops;
|
||||
eth_dev->device = &dev->device;
|
||||
rte_eth_dev_probing_finish(eth_dev);
|
||||
return 0;
|
||||
}
|
||||
|
@ -1017,6 +1017,7 @@ pmd_pcap_probe(struct rte_vdev_device *dev)
|
||||
}
|
||||
/* TODO: request info from primary to set up Rx and Tx */
|
||||
eth_dev->dev_ops = &ops;
|
||||
eth_dev->device = &dev->device;
|
||||
rte_eth_dev_probing_finish(eth_dev);
|
||||
return 0;
|
||||
}
|
||||
|
@ -1931,6 +1931,7 @@ rte_pmd_tun_probe(struct rte_vdev_device *dev)
|
||||
return -1;
|
||||
}
|
||||
eth_dev->dev_ops = &ops;
|
||||
eth_dev->device = &dev->device;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -2000,6 +2001,7 @@ rte_pmd_tap_probe(struct rte_vdev_device *dev)
|
||||
}
|
||||
/* TODO: request info from primary to set up Rx and Tx */
|
||||
eth_dev->dev_ops = &ops;
|
||||
eth_dev->device = &dev->device;
|
||||
rte_eth_dev_probing_finish(eth_dev);
|
||||
return 0;
|
||||
}
|
||||
|
@ -1354,6 +1354,7 @@ rte_pmd_vhost_probe(struct rte_vdev_device *dev)
|
||||
}
|
||||
/* TODO: request info from primary to set up Rx and Tx */
|
||||
eth_dev->dev_ops = &ops;
|
||||
eth_dev->device = &dev->device;
|
||||
rte_eth_dev_probing_finish(eth_dev);
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user