summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorZeng Chi <zengchi@kylinos.cn>2026-09-04 21:45:13 +0800
committerHuacai Chen <chenhuacai@loongson.cn>2026-09-04 21:45:13 +0800
commit501514d6ebd2111c353a1296f25dbe22fbd64657 (patch)
treee96b8ca91533442263aa16281a739141f26934f4 /scripts
parent27a9bfee3bbcb3cabb77797354f07e0e44e49831 (diff)
downloadlinux-501514d6ebd2111c353a1296f25dbe22fbd64657.tar.gz
linux-501514d6ebd2111c353a1296f25dbe22fbd64657.zip
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. Cc: stable@vger.kernel.org Fixes: 1928254c5ccb ("LoongArch: KVM: Add irqfd support") Reported-by: Sashiko <sashiko-bot@kernel.org> Closes: https://lore.kernel.org/all/20260531140921.1B1181F00893@smtp.kernel.org/ Reviewed-by: Tao Cui <cuitao@kylinos.cn> Reviewed-by: Bibo Mao <maobibo@loongson.cn> Signed-off-by: Zeng Chi <zengchi@kylinos.cn> Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
Diffstat (limited to 'scripts')
0 files changed, 0 insertions, 0 deletions