[RFC PATCH 12/19] vfio/pci: Serialize physical device information queries with recovery
From: Shameer Kolothum
Date: Tue Sep 01 2026 - 05:44:30 EST
Hold recovery_lock for reading around AtomicOps capability discovery,
which reads config space to work out what the device supports. The rest
of what VFIO_DEVICE_GET_INFO and VFIO_DEVICE_GET_REGION_INFO report is
cached or software only, and remains available without taking
recovery_lock.
Assisted-by: Claude:claude-opus-5
Signed-off-by: Shameer Kolothum <skolothumtho@xxxxxxxxxx>
---
drivers/vfio/pci/vfio_pci_core.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/drivers/vfio/pci/vfio_pci_core.c b/drivers/vfio/pci/vfio_pci_core.c
index 95884e713a4b..4447967413e7 100644
--- a/drivers/vfio/pci/vfio_pci_core.c
+++ b/drivers/vfio/pci/vfio_pci_core.c
@@ -1179,7 +1179,13 @@ static int vfio_pci_ioctl_get_info(struct vfio_pci_core_device *vdev,
return ret;
}
+ ret = vfio_pci_core_access_begin(vdev);
+ if (ret) {
+ kfree(caps.buf);
+ return ret;
+ }
ret = vfio_pci_info_atomic_cap(vdev, &caps);
+ vfio_pci_core_access_end(vdev);
if (ret && ret != -ENODEV) {
pci_warn(vdev->pdev,
"Failed to setup AtomicOps info capability\n");
--
2.43.0