Database/Kernel, userspace & hypervisor
Linux kernel (drivers/pci): Pci_dev_lock() and the sysfs SR-IOV path took the device lock and the config-space access
Impact
Pci_dev_lock() and the sysfs SR-IOV path took the device lock and the config-space access lock in opposite orders, so a device reset racing an SR-IOV VF enable/disable deadlocks permanently. Both threads hang in D state holding the PCI device lock, which wedges every subsequent operation on that device - VF provisioning, reset, unbind - and the only way out is a reboot of the node all the tenants are sharing.
Who can reach it
Both halves are reachable in a normal passthrough cluster. A tenant holding /dev/vfio/* can call VFIO_DEVICE_RESET, which goes through pci_dev_lock() - that is side A and needs no host privilege. Side B is the operator's own VF lifecycle: writing to sysfs sriov_numvfs to hand out or reclaim VFs, which reaches pci_cfg_access_lock() through vfio_pci_core_sriov_configure() and pci_disable_sriov(). A tenant that resets its device in a loop while the control plane is reprovisioning VFs on the same PF can win the interleaving. Requires SR-IOV to be in use on the node.
What to do
Update to a kernel carrying the fix (no fixed_in published by the CNA; the stable commits below are widely backported). Interim: serialise VF provisioning against tenant activity - stop the tenant workload and revoke the VFIO device node before changing sriov_numvfs on a PF, rather than reconfiguring VFs while tenants are live on the same PF.
References
Related entries
- Linux kernel (drivers/pci): The DOE state machine signals the caller's completion before destroying the work_structCVE-2023-54235 · Linux kernel (drivers/pci)Medium
- Linux kernel (drivers/pci): Enabling or disabling SR-IOV virtual functions was not serialised against PCI hotplug, soCVE-2025-40219 · Linux kernel (drivers/pci)Medium
- Linux kernel (drivers/pci): When setting up an SR-IOV virtual function fails partway through, the half-initialised VFCVE-2025-22092 · Linux kernel (drivers/pci)Medium
- Linux kernel (drivers/pci): A failed mmap of peer-to-peer DMA memory leaks the pgmap reference it took, and the leak isCVE-2026-45880 · Linux kernel (drivers/pci)Medium
- Linux kernel (drivers/pci): When the kernel coalesces two adjacent host-bridge apertures it invalidates the absorbedCVE-2023-53814 · Linux kernel (drivers/pci)Medium
- Linux kernel (drivers/pci): Pci_device_is_present() read the Vendor/Device ID directly, which always reads as all-onesCVE-2022-50636 · Linux kernel (drivers/pci)Medium
This entry is curated: imported from vendor advisories with machine assistance, not yet individually verified. Confirm against your vendor's advisory before acting, and report anything wrong.