In the Linux kernel, the following vulnerability has been resolved:
KVM: arm64: Get rid of userspace_irqchip_in_use
Improper use of userspace_irqchip_in_use led to syzbot hitting the following WARN_ON() in kvm_timer_update_irq():
WARNING: CPU: 0 PID: 3281 at arch/arm64/kvm/arch_timer.c:459 kvm_timer_update_irq+0x21c/0x394 Call trace: kvm_timer_update_irq+0x21c/0x394 arch/arm64/kvm/arch_timer.c:459 kvm_timer_vcpu_reset+0x158/0x684 arch/arm64/kvm/arch_timer.c:968 kvm_reset_vcpu+0x3b4/0x560 arch/arm64/kvm/reset.c:264 kvm_vcpu_set_target arch/arm64/kvm/arm.c:1553 [inline] kvm_arch_vcpu_ioctl_vcpu_init arch/arm64/kvm/arm.c:1573 [inline] kvm_arch_vcpu_ioctl+0x112c/0x1b3c arch/arm64/kvm/arm.c:1695 kvm_vcpu_ioctl+0x4ec/0xf74 virt/kvm/kvm_main.c:4658 vfs_ioctl fs/ioctl.c:51 [inline] __do_sys_ioctl fs/ioctl.c:907 [inline] __se_sys_ioctl fs/ioctl.c:893 [inline] __arm64_sys_ioctl+0x108/0x184 fs/ioctl.c:893 __invoke_syscall arch/arm64/kernel/syscall.c:35 [inline] invoke_syscall+0x78/0x1b8 arch/arm64/kernel/syscall.c:49 el0_svc_common+0xe8/0x1b0 arch/arm64/kernel/syscall.c:132 do_el0_svc+0x40/0x50 arch/arm64/kernel/syscall.c:151 el0_svc+0x54/0x14c arch/arm64/kernel/entry-common.c:712 el0t_64_sync_handler+0x84/0xfc arch/arm64/kernel/entry-common.c:730 el0t_64_sync+0x190/0x194 arch/arm64/kernel/entry.S:598
The following sequence led to the scenario: - Userspace creates a VM and a vCPU. - The vCPU is initialized with KVM_ARM_VCPU_PMU_V3 during KVM_ARM_VCPU_INIT. - Without any other setup, such as vGIC or vPMU, userspace issues KVM_RUN on the vCPU. Since the vPMU is requested, but not setup, kvm_arm_pmu_v3_enable() fails in kvm_arch_vcpu_run_pid_change(). As a result, KVM_RUN returns after enabling the timer, but before incrementing 'userspace_irqchip_in_use': kvm_arch_vcpu_run_pid_change() ret = kvm_arm_pmu_v3_enable() if (!vcpu->arch.pmu.created) return -EINVAL; if (ret) return ret; [...] if (!irqchip_in_kernel(kvm)) static_branch_inc(&userspace_irqchip_in_use); - Userspace ignores the error and issues KVM_ARM_VCPU_INIT again. Since the timer is already enabled, control moves through the following flow, ultimately hitting the WARN_ON(): kvm_timer_vcpu_reset() if (timer->enabled) kvm_timer_update_irq() if (!userspace_irqchip()) ret = kvm_vgic_inject_irq() ret = vgic_lazy_init() if (unlikely(!vgic_initialized(kvm))) if (kvm->arch.vgic.vgic_model != KVM_DEV_TYPE_ARM_VGIC_V2) return -EBUSY; WARN_ON(ret);
Theoretically, since userspace_irqchip_in_use's functionality can be simply replaced by '!irqchip_in_kernel()', get rid of the static key to avoid the mismanagement, which also helps with the syzbot issue.
CVSS Details
- CVSS 3.1 Base Score: 5.5
- CVSS 3.1 Vector: (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H)
Covered by Rapid7
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Debian | — | Upgrade linux | May 15, 2025 | Dec 27, 2024 |
| Huawei Euleros 2_0_sp11 | — | Upgrade kernel-abi-stablelistsUpgrade kernelUpgrade kernel-tools-libsUpgrade kernel-toolsUpgrade bpftoolUpgrade python3-perf | Apr 11, 2025 | Dec 27, 2024 |
| Huawei Euleros 2_0_sp12 | — | Upgrade python3-perfUpgrade kernelUpgrade kernel-abi-stablelistsUpgrade kernel-toolsUpgrade bpftoolUpgrade kernel-tools-libs | May 7, 2025 | Dec 27, 2024 |
| Huawei Euleros 2_0_sp13 | — | Upgrade kernel-abi-stablelistsUpgrade kernel-tools-libsUpgrade kernelUpgrade python3-perfUpgrade bpftoolUpgrade kernel-tools | Apr 1, 2025 | Dec 27, 2024 |
| Redhat_linux | — | No solution exists | Jul 9, 2025 | Dec 27, 2024 |
| Ubuntu | — | Upgrade linux-image-6.8.0-1026-nvidia-lowlatency-64kUpgrade linux-image-6.8.0-1026-nvidia-64kUpgrade linux-image-nvidia-64kUpgrade linux-image-raspiUpgrade linux-image-6.8.0-58-genericUpgrade linux-image-azureUpgrade linux-image-6.8.0-1026-nvidiaUpgrade linux-image-nvidia-hwe-22.04Upgrade linux-image-6.8.1-1020-realtimeUpgrade linux-image-virtual-hwe-22.04Upgrade linux-image-aws-lts-24.04Upgrade linux-image-gkeopUpgrade linux-image-6.8.0-1024-ibmUpgrade linux-image-6.8.0-1028-gcp-64kUpgrade linux-image-oem-22.04cUpgrade linux-image-generic-hwe-22.04Upgrade linux-image-6.8.0-1024-oracleUpgrade linux-image-6.11.0-1009-azureUpgrade linux-image-6.8.0-1023-gkeUpgrade linux-image-azure-fde-lts-24.04Upgrade linux-image-6.8.0-1027-azure-fdeUpgrade linux-image-oracle-64kUpgrade linux-image-6.11.0-1009-awsUpgrade linux-image-6.8.0-1014-azure-nvidiaUpgrade linux-image-kvmUpgrade linux-image-gcp-lts-24.04Upgrade linux-image-nvidia-6.8Upgrade linux-image-6.8.0-1026-oemUpgrade linux-image-6.8.0-1026-nvidia-lowlatencyUpgrade linux-image-generic-64kUpgrade linux-image-nvidia-lowlatencyUpgrade linux-image-6.11.0-18-genericUpgrade linux-image-6.11.0-1015-oemUpgrade linux-image-oracle-64k-lts-24.04Upgrade linux-image-6.11.0-1010-lowlatencyUpgrade linux-image-realtime-hwe-24.04Upgrade linux-image-6.11.0-1009-azure-fdeUpgrade linux-image-oem-22.04dUpgrade linux-image-azure-fdeUpgrade linux-image-generic-hwe-24.04Upgrade linux-image-gcp-64kUpgrade linux-image-6.8.0-58-generic-64kUpgrade linux-image-6.8.0-1010-gkeopUpgrade linux-image-6.11.0-1008-raspiUpgrade linux-image-oem-24.04bUpgrade linux-image-ibm-lts-24.04Upgrade linux-image-raspi-realtimeUpgrade linux-image-azure-nvidiaUpgrade linux-image-6.11.0-1009-gcpUpgrade linux-image-6.8.0-1024-oracle-64kUpgrade linux-image-lowlatencyUpgrade linux-image-genericUpgrade linux-image-6.8.0-1027-awsUpgrade linux-image-6.8.0-58-lowlatency-64kUpgrade linux-image-oracle-lts-24.04Upgrade linux-image-generic-lpaeUpgrade linux-image-generic-64k-hwe-22.04Upgrade linux-image-6.11.0-1005-realtimeUpgrade linux-image-lowlatency-hwe-22.04Upgrade linux-image-oem-24.04aUpgrade linux-image-gkeUpgrade linux-image-awsUpgrade linux-image-lowlatency-64k-hwe-22.04Upgrade linux-image-virtualUpgrade linux-image-gcp-64k-lts-24.04Upgrade linux-image-azure-lts-24.04Upgrade linux-image-nvidia-64k-hwe-22.04Upgrade linux-image-ibmUpgrade linux-image-realtimeUpgrade linux-image-oem-24.04Upgrade linux-image-gkeop-6.8Upgrade linux-image-ibm-classicUpgrade linux-image-oem-22.04Upgrade linux-image-oem-22.04bUpgrade linux-image-gcpUpgrade linux-image-lowlatency-64kUpgrade linux-image-6.11.0-1011-oracle-64kUpgrade linux-image-6.11.0-1011-oracleUpgrade linux-image-generic-64k-hwe-24.04Upgrade linux-image-virtual-hwe-24.04Upgrade linux-image-6.8.0-1027-azureUpgrade linux-image-6.8.0-1028-gcpUpgrade linux-image-6.11.0-1010-lowlatency-64kUpgrade linux-image-nvidiaUpgrade linux-image-oracleUpgrade linux-image-nvidia-64k-6.8Upgrade linux-image-nvidia-lowlatency-64kUpgrade linux-image-oem-22.04aUpgrade linux-image-6.8.0-2023-raspi-realtimeUpgrade linux-image-6.8.0-1028-raspiUpgrade linux-image-6.11.0-18-generic-64kUpgrade linux-image-6.8.0-58-lowlatency | Feb 20, 2025 | Dec 27, 2024 |
Prioritise with Active Threat Intelligence
With curated Threat Intelligence, you can see which vulnerabilities truly put you at risk, prioritize what matters most, and act before attackers do.
Explore Intelligence Hub