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

Reply via email to