[dpdk-dev] [PATCH] devargs: fix freeing during device removal

Thomas Monjalon thomas at monjalon.net
Thu Oct 18 02:19:49 CEST 2018


After calling unplug function of a bus, the device is expected
to be freed. It is too late for getting devargs to remove.
Anyway, the buses which implement unplug are already freeing
the devargs, except the PCI bus.
So the call to rte_devargs_remove() is removed from EAL and
added in PCI.

Fixes: 2effa126fbd8 ("devargs: simplify parameters of removal function")

Signed-off-by: Thomas Monjalon <thomas at monjalon.net>
---
 drivers/bus/pci/pci_common.c           | 1 +
 lib/librte_eal/common/eal_common_dev.c | 2 --
 2 files changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/bus/pci/pci_common.c b/drivers/bus/pci/pci_common.c
index 41f8fc27e..feb79803c 100644
--- a/drivers/bus/pci/pci_common.c
+++ b/drivers/bus/pci/pci_common.c
@@ -522,6 +522,7 @@ pci_unplug(struct rte_device *dev)
 	ret = rte_pci_detach_dev(pdev);
 	if (ret == 0) {
 		rte_pci_remove_device(pdev);
+		rte_devargs_remove(dev->devargs);
 		free(pdev);
 	}
 	return ret;
diff --git a/lib/librte_eal/common/eal_common_dev.c b/lib/librte_eal/common/eal_common_dev.c
index 0c873bfe0..8b0844af1 100644
--- a/lib/librte_eal/common/eal_common_dev.c
+++ b/lib/librte_eal/common/eal_common_dev.c
@@ -372,8 +372,6 @@ local_dev_remove(struct rte_device *dev)
 		return ret;
 	}
 
-	rte_devargs_remove(dev->devargs);
-
 	return 0;
 }
 
-- 
2.19.0



More information about the dev mailing list