CVE-2026-46036

vfio/cdx: Serialize VFIO_DEVICE_SET_IRQS with a per-device mutex

High · published May 27, 2026

CVSS v3.1
7.8
EPSS
0%
Percentile
6.1
In the wild
Unconfirmed
What it is

In the Linux kernel, the following vulnerability has been resolved:

vfio/cdx: Serialize VFIO_DEVICE_SET_IRQS with a per-device mutex

vfio_cdx_set_msi_trigger() reads vdev->config_msi and operates on the

vdev->cdx_irqs array based on its value, but provides no serialization

against concurrent VFIO_DEVICE_SET_IRQS ioctls. Two callers can race

such that one observes config_msi as set while another clears it and

frees cdx_irqs via vfio_cdx_msi_disable(), resulting in a use-after-free

of the cdx_irqs array.

Add a cdx_irqs_lock mutex to struct vfio_cdx_device and acquire it in

vfio_cdx_set_msi_trigger(), which is the single chokepoint through

which all updates to config_msi, cdx_irqs, and msi_count flow, covering

both the ioctl path and the close-device cleanup path. This keeps the

test of config_msi atomic with the subsequent enable, disable, or

trigger operations.

Drop the pre-call !cdx_irqs test from vfio_cdx_irqs_cleanup() as part

of this change: the optimization it provided is redundant with the

!config_msi early-return inside vfio_cdx_msi_disable(), and leaving the

test in place would be an unsynchronized read of state the new lock is

meant to protect.

The record
Technical detail
CVSS v3.1
7.8 · HIGH
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00170 · 6.1th percentile
Published
2026-05-27T12:56Z
EPSS history
Timeline
  • 27 MAY 12:56Z
    vfio/cdx: Serialize VFIO_DEVICE_SET_IRQS with a per-device mutex
    cvelistv5