Database/Kernel, userspace & hypervisor
Linux kernel (drivers/pci/msi): When MSI vector allocation for a PCI device fails, the core MSI code keeps using a
Impact
When MSI vector allocation for a PCI device fails, the core MSI code keeps using a descriptor that has already been freed, giving a use-after-free read (and a freed-slab pointer chase) inside the host kernel. On a passthrough node this is host-side memory corruption driven from the enable path of a device a tenant controls, which is the wrong side of the guest boundary for a dangling kernel pointer.
Who can reach it
Reachable on the host whenever pci_alloc_irq_vectors() takes the MSI failure path. The path that matters for a GPU cluster is device passthrough: a tenant VM holding an assigned GPU or NIC through /dev/vfio/* chooses when MSI is enabled and how many vectors are requested (VFIO_DEVICE_SET_IRQS -> vfio_msi_enable -> pci_alloc_irq_vectors), so a guest that asks for a vector count the host cannot satisfy drives the failing allocation itself. Requires vfio-pci passthrough (or any host driver bind that can fail MSI setup); a container with no device node cannot reach it.
What to do
Boot a kernel carrying the msi_capability_init() fix (backported across the 5.10/5.15/6.1/6.6 stable lines - confirm your distro's build). Interim: keep host IRQ vector headroom so guest-requested MSI allocation does not fail, cap the vector count exposed to guests, and do not hand /dev/vfio/* to workloads that do not need passthrough.
References
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.