CVE Catalog

CVE-2026-89907

HighCVSS 8.8
Published: Updated: Translated: NVD NIST

Summary

In the Linux kernel, pch_msi_set_irq() in KVM for LoongArch passes e->msi.data directly to eiointc_set_irq() as the IRQ number without checking it against EIOINTC_IRQS. The MSI data comes from userspace (KVM_SET_GSI_ROUTING or KVM_SIGNAL_MSI), and a value >= 256 causes out-of-bounds reads and writes, allowing kernel memory corruption. The fix rejects MSI data outside the EIOINTC IRQ space.

Risk Assessment

Any process holding a VM fd can corrupt kernel memory beyond the loongarch_eiointc allocation, potentially leading to privilege escalation or system crash. It affects KVM on LoongArch environments.

Recommendation

Update the Linux kernel to a version containing the fix. Restrict access to /dev/kvm to trusted users until patched.

Other vulnerabilities in Linux kernel

See all
Original NVD description (English source)

In the Linux kernel, the following vulnerability has been resolved: LoongArch: KVM: Validate MSI data before routing it to EIOINTC pch_msi_set_irq() passes e->msi.data straight into eiointc_set_irq() as the irq number. The MSI data comes from userspace, that either via a KVM_IRQ_ROUTING_MSI entry set with KVM_SET_GSI_ROUTING (used by irqfd and KVM_IRQ_LINE) or directly via KVM_SIGNAL_MSI, and is never checked against EIOINTC_IRQS. eiointc_set_irq() uses the value with __set_bit()/__clear_bit() on the 256-bit isr bitmap, eiointc_update_irq() then indexes sw_coremap[] and the per-cpu coreisr/sw_coreisr bitmaps with it. Therefore a data value >= 256 reads and writes memory past the end of those arrays, i.e. any process holding a VM fd can corrupt kernel memory beyond the allocation of loongarch_eiointc. Reject MSI data that doesn't fit in the EIOINTC irq space. The DMSINTC path is unaffected as it decodes the vector from the address and masks it.

Vulnerability data from NVD (NIST) · CISA KEV · EPSS