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: [email protected]

Signed-off-by: Volodymyr Fialko <[email protected]>
---
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