devargs: fix freeing during device removal

Message ID 20181018001949.17443-1-thomas@monjalon.net (mailing list archive)
State Accepted, archived
Delegated to: Thomas Monjalon
Headers
Series devargs: fix freeing during device removal |

Checks

Context Check Description
ci/Intel-compilation success Compilation OK
ci/checkpatch success coding style OK

Commit Message

Thomas Monjalon Oct. 18, 2018, 12:19 a.m. UTC
  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@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(-)
  

Comments

Thomas Monjalon Oct. 19, 2018, 8:53 p.m. UTC | #1
18/10/2018 02:19, Thomas Monjalon:
> 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@monjalon.net>

Applied
  

Patch

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;
 }