[dpdk-dev] [PATCH 1/2] examples/kni: check if pci_dev isn't NULL before using it

Tomasz Duszynski tdu at semihalf.com
Mon Oct 16 13:45:47 CEST 2017


Since virtual devices, i.e mrvl net pmd, do not touch pci_dev
dereferencing it will cause segmentation fault as by default
it's set to NULL in rte_eth_dev_info_get().

Signed-off-by: Tomasz Duszynski <tdu at semihalf.com>
---
 examples/kni/main.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/examples/kni/main.c b/examples/kni/main.c
index 6d9e4a6..cb48fb5 100644
--- a/examples/kni/main.c
+++ b/examples/kni/main.c
@@ -805,8 +805,11 @@ kni_alloc(uint16_t port_id)

 			memset(&dev_info, 0, sizeof(dev_info));
 			rte_eth_dev_info_get(port_id, &dev_info);
-			conf.addr = dev_info.pci_dev->addr;
-			conf.id = dev_info.pci_dev->id;
+
+			if (dev_info.pci_dev) {
+				conf.addr = dev_info.pci_dev->addr;
+				conf.id = dev_info.pci_dev->id;
+			}

 			memset(&ops, 0, sizeof(ops));
 			ops.port_id = port_id;
--
2.7.4



More information about the dev mailing list