bus/pci: fix leak on VFIO mapping error
authorYunjian Wang <wangyunjian@huawei.com>
Fri, 11 Sep 2020 11:08:04 +0000 (19:08 +0800)
committerDavid Marchand <david.marchand@redhat.com>
Mon, 5 Oct 2020 08:08:57 +0000 (10:08 +0200)
Currently, only the 'vfio_dev_fd' is closed in failure path, so
some resources are not released(such as 'vfio_group_fd'). The
rte_vfio_release_device() should be used to avoid this problem.

Fixes: 33604c31354a ("vfio: refactor PCI BAR mapping")
Cc: stable@dpdk.org
Signed-off-by: Yunjian Wang <wangyunjian@huawei.com>
Reviewed-by: Anatoly Burakov <anatoly.burakov@intel.com>
drivers/bus/pci/linux/pci_vfio.c

index 940ebc1..ef4f720 100644 (file)
@@ -838,7 +838,8 @@ pci_vfio_map_resource_primary(struct rte_pci_device *dev)
 err_vfio_res:
        rte_free(vfio_res);
 err_vfio_dev_fd:
-       close(vfio_dev_fd);
+       rte_vfio_release_device(rte_pci_get_sysfs_path(),
+                       pci_addr, vfio_dev_fd);
        return -1;
 }
 
@@ -906,7 +907,8 @@ pci_vfio_map_resource_secondary(struct rte_pci_device *dev)
 
        return 0;
 err_vfio_dev_fd:
-       close(vfio_dev_fd);
+       rte_vfio_release_device(rte_pci_get_sysfs_path(),
+                       pci_addr, vfio_dev_fd);
        return -1;
 }