GPU VulnDB

Database/Kernel, userspace & hypervisor

Linux kernel IOMMU DMA: unlocked msi_page_list corruption with two devices in one VFIO container

CVSS 7.8CVE-2026-90244Kernel, userspace & hypervisorcurated

Impact

On IOMMUs that publish IOMMU_RESV_SW_MSI (ARM SMMU in practice), a VM assigned two devices through the legacy VFIO type1 container shares one merged iommu_domain across both device fds. A prior commit removed the global msi_prepare_lock on the assumption that a domain belongs to exactly one group, which is false for the merged-container case, so two parallel VFIO_DEVICE_SET_IRQS calls can enter iommu_dma_get_msi_page() concurrently and corrupt the shared msi_page_list. This is the code path GPU and NIC passthrough runs through on Arm hosts, so the blast radius is host-side IOMMU state used to map guest MSIs, with the integrity and availability impact NVD scores at 7.8. The fix restores the static lock; the maintainers note contention is expected to be effectively nil.

Who can reach it

Local - a guest or local user able to drive two passed-through devices in one legacy VFIO type1 container (needs access to the VFIO device fds, i.e. an authorized passthrough VM or a local user with /dev/vfio permissions). x86 hosts are not affected: the race requires an IOMMU that reserves a software MSI region, such as ARM SMMU.

What to do

Pick up the stable kernels carrying the three listed commits and reboot the affected hosts; there is no runtime mitigation short of not placing two SW-MSI devices in the same legacy container. On Arm GPU/accelerator hosts this is a drain-and-reboot per node. x86-only fleets can defer. iommufd-based passthrough already avoids the equivalent problem via its own sw_msi_lock.

References

Related entries

All Kernel, userspace & hypervisor entries

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.