From 739e13bcc98f562d3301f808ec76507ebae82e63 Mon Sep 17 00:00:00 2001 From: Thomas Monjalon Date: Thu, 18 Oct 2018 01:42:52 +0200 Subject: [PATCH] devargs: fix freeing during device removal 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 --- 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 41f8fc27eb..feb79803c1 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 0c873bfe0b..8b0844af16 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.20.1