During the bus scan, memory for device configuration is allocated. Currently, if a driver wasn't attached to the device during initialization, memory for that device will not be released at bus cleanup. This patch address this issue and releases the memory for all allocated devices.
Fixes: 1cab1a40ea9b ("bus: cleanup devices on shutdown") Cc: sta...@dpdk.org Signed-off-by: Volodymyr Fialko <vfia...@marvell.com> --- V2: - Updated commit message. drivers/bus/pci/pci_common.c | 3 ++- drivers/bus/vdev/vdev.c | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/drivers/bus/pci/pci_common.c b/drivers/bus/pci/pci_common.c index e0e15fd624..3b4196a43b 100644 --- a/drivers/bus/pci/pci_common.c +++ b/drivers/bus/pci/pci_common.c @@ -450,7 +450,7 @@ pci_cleanup(void) int ret = 0; if (drv == NULL || drv->remove == NULL) - continue; + goto free; ret = drv->remove(dev); if (ret < 0) { @@ -460,6 +460,7 @@ pci_cleanup(void) dev->driver = NULL; dev->device.driver = NULL; +free: /* free interrupt handles */ rte_intr_instance_free(dev->intr_handle); dev->intr_handle = NULL; diff --git a/drivers/bus/vdev/vdev.c b/drivers/bus/vdev/vdev.c index 41bc07dde7..7974b27295 100644 --- a/drivers/bus/vdev/vdev.c +++ b/drivers/bus/vdev/vdev.c @@ -578,18 +578,19 @@ vdev_cleanup(void) int ret = 0; if (dev->device.driver == NULL) - continue; + goto free; drv = container_of(dev->device.driver, const struct rte_vdev_driver, driver); if (drv->remove == NULL) - continue; + goto free; ret = drv->remove(dev); if (ret < 0) error = -1; dev->device.driver = NULL; +free: free(dev); } -- 2.34.1