bus/pci: fix leak on VFIO mapping error

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: 33604c3135 ("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>
This commit is contained in:
Yunjian Wang 2020-09-11 19:08:04 +08:00 committed by David Marchand
parent e34a43a672
commit 2a089d2d52

View File

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