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 --- 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