[PATCH v4 1/4] bus/pci: fix unmap on failure in multi-process

Thomas Monjalon thomas at monjalon.net
Wed Jan 28 12:58:30 CET 2026


This error is seen in build of type "minsize":

In function 'pci_vfio_map_resource_secondary':
drivers/bus/pci/linux/pci_vfio.c:1005:28: error:
'maps' may be used uninitialized [-Werror=maybe-uninitialized]
 1005 |                 if (maps[j].addr)

On failure before assigning maps, it was trying to unmap.
The fix is changing the goto destination after unmapping.

Signed-off-by: Thomas Monjalon <thomas at monjalon.net>
---
 drivers/bus/pci/linux/pci_vfio.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/bus/pci/linux/pci_vfio.c b/drivers/bus/pci/linux/pci_vfio.c
index 242f567ed7..bc5c5c2499 100644
--- a/drivers/bus/pci/linux/pci_vfio.c
+++ b/drivers/bus/pci/linux/pci_vfio.c
@@ -968,7 +968,7 @@ pci_vfio_map_resource_secondary(struct rte_pci_device *dev)
 
 	ret = pci_vfio_fill_regions(dev, vfio_dev_fd, &device_info);
 	if (ret)
-		goto err_vfio_dev_fd;
+		goto err_vfio_dev;
 
 	/* map BARs */
 	maps = vfio_res->maps;
@@ -1005,6 +1005,7 @@ pci_vfio_map_resource_secondary(struct rte_pci_device *dev)
 		if (maps[j].addr)
 			pci_unmap_resource(maps[j].addr, maps[j].size);
 	}
+err_vfio_dev:
 	rte_vfio_release_device(rte_pci_get_sysfs_path(),
 			pci_addr, vfio_dev_fd);
 	return -1;
-- 
2.52.0



More information about the dev mailing list