This driver uses its own VFIO container and handles mapping/unmapping
itself. It should not use RTE_PCI_DRV_NEED_MAPPING flag, which causes
the PCI bus to also attempt unmapping, resulting in double free.
Fixes: 7b2a1228c59d ("vdpa/nfp: add remap PCI memory")
Cc: [email protected]
Signed-off-by: David Marchand <[email protected]>
---
drivers/vdpa/nfp/nfp_vdpa.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/drivers/vdpa/nfp/nfp_vdpa.c b/drivers/vdpa/nfp/nfp_vdpa.c
index f4fd5c92ec..4c0ab3ff30 100644
--- a/drivers/vdpa/nfp/nfp_vdpa.c
+++ b/drivers/vdpa/nfp/nfp_vdpa.c
@@ -119,8 +119,6 @@ nfp_vdpa_vfio_setup(struct nfp_vdpa_dev *device)
char dev_name[RTE_DEV_NAME_MAX_LEN] = {0};
struct rte_pci_device *pci_dev = device->pci_dev;
- rte_pci_unmap_device(pci_dev);
-
rte_pci_device_name(&pci_dev->addr, dev_name, RTE_DEV_NAME_MAX_LEN);
ret = rte_vfio_get_group_num(rte_pci_get_sysfs_path(), dev_name,
&device->iommu_group);
@@ -1301,7 +1299,7 @@ static struct nfp_class_driver nfp_vdpa = {
.drv_class = NFP_CLASS_VDPA,
.name = RTE_STR(NFP_VDPA_DRIVER_NAME),
.id_table = pci_id_nfp_vdpa_map,
- .drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_INTR_LSC,
+ .drv_flags = RTE_PCI_DRV_INTR_LSC,
.probe = nfp_vdpa_pci_probe,
.remove = nfp_vdpa_pci_remove,
};
--
2.54.0