devargs: fix freeing during device removal
Checks
Commit Message
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
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
@@ -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;
@@ -372,8 +372,6 @@ local_dev_remove(struct rte_device *dev)
return ret;
}
- rte_devargs_remove(dev->devargs);
-
return 0;
}