From b758423bc4fe412941a289f3181849669c02b904 Mon Sep 17 00:00:00 2001 From: Michael Haeuptle Date: Mon, 6 Apr 2020 22:23:23 +0000 Subject: [PATCH] vfio: fix race condition with sysfs This fix treats a 0 return value from vfio_open_group_fd in vfio_get_group_fd as the intended error condition instead of putting an incorrect 0 file descriptor in the vfio_group table. Sometimes, the creation of device files in sysfs is not instantaneously causing vfio_open_groupfd to return 0. This has been observed when hot removing/adding multiple NVMe devices (>=4). Fixes: 340b7bb8d583 ("vfio: extend data structure for multi container") Cc: stable@dpdk.org Signed-off-by: Michael Haeuptle Acked-by: Darek Stojaczyk Acked-by: Anatoly Burakov --- lib/librte_eal/linux/eal_vfio.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/librte_eal/linux/eal_vfio.c b/lib/librte_eal/linux/eal_vfio.c index 4502aefed3..1979f6fdd8 100644 --- a/lib/librte_eal/linux/eal_vfio.c +++ b/lib/librte_eal/linux/eal_vfio.c @@ -379,7 +379,7 @@ vfio_get_group_fd(struct vfio_config *vfio_cfg, } vfio_group_fd = vfio_open_group_fd(iommu_group_num); - if (vfio_group_fd < 0) { + if (vfio_group_fd <= 0) { RTE_LOG(ERR, EAL, "Failed to open group %d\n", iommu_group_num); return -1; } -- 2.20.1