Vulnerability · Published Feb 14, 2026 · Assigned by Linux

CVE-2026-23198KVM: Don't clobber irqfd routing type when deassigning irqfd

High 7.8

In plain English

A high-severity use-after-free in Linux from Linux. There are no confirmed reports of exploitation so far. The chance it is exploited in the next 30 days is estimated at 0.1% (higher than 4% of all known vulnerabilities). Fixed versions are available - upgrade the affected package.

Severity (CVSS 3.1)7.8High
Exploit odds (30 days)0.1%top 96.1% of all CVEs
Exploited in the wildNo reportsCISA SSVC: none
Attack toolingNoneno public tooling known

Official description

In the Linux kernel, the following vulnerability has been resolved: KVM: Don't clobber irqfd routing type when deassigning irqfd When deassigning a KVM_IRQFD, don't clobber the irqfd's copy of the IRQ's routing entry as doing so breaks kvm_arch_irq_bypass_del_producer() on x86 and arm64, which explicitly look for KVM_IRQ_ROUTING_MSI. Instead, to handle a concurrent routing update, verify that the irqfd is still active before consuming the routing information. As evidenced by the x86 and arm64 bugs, and another bug in kvm_arch_update_irqfd_routing() (see below), clobbering the entry type without notifying arch code is surprising and error prone. As a bonus, checking that the irqfd is active provides a convenient location for documenting _why_ KVM must not consume the routing entry for an irqfd that is in the process of being deassigned: once the irqfd is deleted from the list (which happens *before* the eventfd is detached), it will no longer receive updates via kvm_irq_routing_update(), and so KVM could deliver an event using stale routing information (relative to KVM_SET_GSI_ROUTING returning to userspace). As an even better bonus, explicitly checking for the irqfd being active fixes a similar bug to the one the clobbering is trying to prevent: if an irqfd is deactivated, and then its routing is changed, kvm_irq_routing_update() won't invoke kvm_arch_update_irqfd_routing() (because the irqfd isn't in the list). And so if the irqfd is in bypass mode, IRQs will continue to be posted using the old routing information. As for kvm_arch_irq_bypass_del_producer(), clobbering the routing type results in KVM incorrectly keeping the IRQ in bypass mode, which is especially problematic on AMD as KVM tracks IRQs that are being posted to a vCPU in a list whose lifetime is tied to the irqfd. Without the help of KASAN to detect use-after-free, the most common sympton on AMD is a NULL pointer deref in amd_iommu_update_ga() due to the memory for irqfd structure being re-allocated and zeroed, resulting in irqfd->irq_bypass_data being NULL when read by avic_update_iommu_vcpu_affinity(): BUG: kernel NULL pointer dereference, address: 0000000000000018 #PF: supervisor read access in kernel mode #PF: error_code(0x0000) - not-present page PGD 40cf2b9067 P4D 40cf2b9067 PUD 408362a067 PMD 0 Oops: Oops: 0000 [#1] SMP CPU: 6 UID: 0 PID: 40383 Comm: vfio_irq_test Tainted: G U W O 6.19.0-smp--5dddc257e6b2-irqfd #31 NONE Tainted: [U]=USER, [W]=WARN, [O]=OOT_MODULE Hardware name: Google, Inc. Arcadia_IT_80/Arcadia_IT_80, BIOS 34.78.2-0 09/05/2025 RIP: 0010:amd_iommu_update_ga+0x19/0xe0 Call Trace: <TASK> avic_update_iommu_vcpu_affinity+0x3d/0x90 [kvm_amd] __avic_vcpu_load+0xf4/0x130 [kvm_amd] kvm_arch_vcpu_load+0x89/0x210 [kvm] vcpu_load+0x30/0x40 [kvm] kvm_arch_vcpu_ioctl_run+0x45/0x620 [kvm] kvm_vcpu_ioctl+0x571/0x6a0 [kvm] __se_sys_ioctl+0x6d/0xb0 do_syscall_64+0x6f/0x9d0 entry_SYSCALL_64_after_hwframe+0x4b/0x53 RIP: 0033:0x46893b </TASK> ---[ end trace 0000000000000000 ]--- If AVIC is inhibited when the irfd is deassigned, the bug will manifest as list corruption, e.g. on the next irqfd assignment. list_add corruption. next->prev should be prev (ffff8d474d5cd588), but was 0000000000000000. (next=ffff8d8658f86530). ------------[ cut here ]------------ kernel BUG at lib/list_debug.c:31! Oops: invalid opcode: 0000 [#1] SMP CPU: 128 UID: 0 PID: 80818 Comm: vfio_irq_test Tainted: G U W O 6.19.0-smp--f19dc4d680ba-irqfd #28 NONE Tainted: [U]=USER, [W]=WARN, [O]=OOT_MODULE Hardware name: Google, Inc. Arcadia_IT_80/Arcadia_IT_80, BIOS 34.78.2-0 09/05/2025 RIP: 0010:__list_add_valid_or_report+0x97/0xc0 Call Trace: <TASK> avic_pi_update_irte+0x28e/0x2b0 [kvm_amd] kvm_pi_update_irte+0xbf/0x190 [kvm] kvm_arch_irq_bypass_add_producer+0x72/0x90 [kvm] irq_bypass_register_consumer+0xcd/0x170 [irqbypa ---truncated---

Affected packages & fixed versions

EcosystemPackageFixed inAdvisory
Debian:12linux6.1.164-1DSA-6163-1
Debian:12linux6.1.164-1DEBIAN-CVE-2026-23198
Debian:13linux6.12.73-1DSA-6141-1
Debian:13linux6.12.73-1DEBIAN-CVE-2026-23198
Debian:14linux6.18.10-1DEBIAN-CVE-2026-23198
Ubuntu:22.04:LTSlinux5.15.0-185.195UBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux5.15.0-185.195USN-8493-1
Ubuntu:24.04:LTSlinux6.8.0-117.117UBUNTU-CVE-2026-23198
Ubuntu:25.10linuxno fix listedUBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-allwinner-5.19no fix listedUBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-aws5.15.0-1111.118UBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-aws5.15.0-1111.118USN-8493-1
Ubuntu:24.04:LTSlinux-aws6.8.0-1055.58UBUNTU-CVE-2026-23198
Ubuntu:25.10linux-awsno fix listedUBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-aws-5.19no fix listedUBUNTU-CVE-2026-23198
Ubuntu:24.04:LTSlinux-aws-6.14no fix listedUBUNTU-CVE-2026-23198
Ubuntu:24.04:LTSlinux-aws-6.17no fix listedUBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-aws-6.2no fix listedUBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-aws-6.5no fix listedUBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-aws-6.86.8.0-1057.60~22.04.1UBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-azure5.15.0-1116.125USN-8493-1
Ubuntu:22.04:LTSlinux-azure5.15.0-1116.125UBUNTU-CVE-2026-23198
Ubuntu:24.04:LTSlinux-azure6.8.0-1056.62UBUNTU-CVE-2026-23198
Ubuntu:25.10linux-azureno fix listedUBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-azure-5.19no fix listedUBUNTU-CVE-2026-23198
Ubuntu:24.04:LTSlinux-azure-6.11no fix listedUBUNTU-CVE-2026-23198
Ubuntu:24.04:LTSlinux-azure-6.14no fix listedUBUNTU-CVE-2026-23198
Ubuntu:24.04:LTSlinux-azure-6.17no fix listedUBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-azure-6.2no fix listedUBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-azure-6.5no fix listedUBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-azure-6.86.8.0-1059.65~22.04.1UBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-azure-fde5.15.0-1116.125UBUNTU-CVE-2026-23198
Ubuntu:24.04:LTSlinux-azure-fde6.8.0-1058.65UBUNTU-CVE-2026-23198
Ubuntu:25.10linux-azure-fdeno fix listedUBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-azure-fde-5.19no fix listedUBUNTU-CVE-2026-23198
Ubuntu:24.04:LTSlinux-azure-fde-6.14no fix listedUBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-azure-fde-6.2no fix listedUBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-azure-fde-6.86.8.0-1058.65~22.04.1UBUNTU-CVE-2026-23198
Ubuntu:24.04:LTSlinux-azure-nvidiano fix listedUBUNTU-CVE-2026-23198
Ubuntu:24.04:LTSlinux-azure-nvidia-6.14no fix listedUBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-gcp5.15.0-1111.121USN-8493-1
Ubuntu:22.04:LTSlinux-gcp5.15.0-1111.121UBUNTU-CVE-2026-23198
Ubuntu:24.04:LTSlinux-gcp6.8.0-1058.61UBUNTU-CVE-2026-23198
Ubuntu:25.10linux-gcpno fix listedUBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-gcp-5.19no fix listedUBUNTU-CVE-2026-23198
Ubuntu:24.04:LTSlinux-gcp-6.11no fix listedUBUNTU-CVE-2026-23198
Ubuntu:24.04:LTSlinux-gcp-6.14no fix listedUBUNTU-CVE-2026-23198
Ubuntu:24.04:LTSlinux-gcp-6.17no fix listedUBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-gcp-6.2no fix listedUBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-gcp-6.5no fix listedUBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-gcp-6.86.8.0-1060.63~22.04.1UBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-gke5.15.0-1107.113UBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-gke5.15.0-1107.113USN-8493-1
Ubuntu:24.04:LTSlinux-gke6.8.0-1054.60UBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-gkeop5.15.0-1094.102UBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-gkeop5.15.0-1094.102USN-8493-1
Ubuntu:24.04:LTSlinux-gkeop6.8.0-1041.44UBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-hwe-5.19no fix listedUBUNTU-CVE-2026-23198
Ubuntu:24.04:LTSlinux-hwe-6.11no fix listedUBUNTU-CVE-2026-23198
Ubuntu:24.04:LTSlinux-hwe-6.14no fix listedUBUNTU-CVE-2026-23198
Ubuntu:24.04:LTSlinux-hwe-6.17no fix listedUBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-hwe-6.2no fix listedUBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-hwe-6.5no fix listedUBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-hwe-6.86.8.0-124.124~22.04.1UBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-ibm5.15.0-1105.109UBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-ibm5.15.0-1105.109USN-8493-1
Ubuntu:24.04:LTSlinux-ibm6.8.0-1055.56UBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-ibm-6.86.8.0-1055.56~22.04.1UBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-intel-iot-realtimeno fix listedUBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-intel-iotg5.15.0-1106.112USN-8493-1
Ubuntu:22.04:LTSlinux-intel-iotg5.15.0-1106.112UBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-kvm5.15.0-1103.108UBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-kvm5.15.0-1103.108USN-8493-1
Ubuntu:22.04:LTSlinux-lowlatency5.15.0-183.193UBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-lowlatency5.15.0-183.193USN-8493-1
Ubuntu:24.04:LTSlinux-lowlatency6.8.0-117.117.1UBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-lowlatency-hwe-5.19no fix listedUBUNTU-CVE-2026-23198
Ubuntu:24.04:LTSlinux-lowlatency-hwe-6.11no fix listedUBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-lowlatency-hwe-6.2no fix listedUBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-lowlatency-hwe-6.5no fix listedUBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-lowlatency-hwe-6.86.8.0-117.117.1~22.04.1UBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-nvidia5.15.0-1106.107USN-8493-1
Ubuntu:22.04:LTSlinux-nvidia5.15.0-1106.107UBUNTU-CVE-2026-23198
Ubuntu:24.04:LTSlinux-nvidia6.8.0-1054.57UBUNTU-CVE-2026-23198
Ubuntu:24.04:LTSlinux-nvidia-6.11no fix listedUBUNTU-CVE-2026-23198
Ubuntu:24.04:LTSlinux-nvidia-6.17no fix listedUBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-nvidia-6.2no fix listedUBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-nvidia-6.5no fix listedUBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-nvidia-6.86.8.0-1054.57~22.04.1UBUNTU-CVE-2026-23198
Ubuntu:24.04:LTSlinux-nvidia-lowlatency6.8.0-1054.57.1UBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-nvidia-tegra5.15.0-1063.63USN-8493-1
Ubuntu:22.04:LTSlinux-nvidia-tegra5.15.0-1063.63UBUNTU-CVE-2026-23198
Ubuntu:24.04:LTSlinux-nvidia-tegra6.8.0-1024.24UBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-nvidia-tegra-igx5.15.0-1052.52USN-8493-1
Ubuntu:22.04:LTSlinux-nvidia-tegra-igx5.15.0-1052.52UBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-oem-5.17no fix listedUBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-oem-6.0no fix listedUBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-oem-6.1no fix listedUBUNTU-CVE-2026-23198
Ubuntu:24.04:LTSlinux-oem-6.11no fix listedUBUNTU-CVE-2026-23198
Ubuntu:24.04:LTSlinux-oem-6.14no fix listedUBUNTU-CVE-2026-23198
Ubuntu:24.04:LTSlinux-oem-6.17no fix listedUBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-oem-6.5no fix listedUBUNTU-CVE-2026-23198
Ubuntu:24.04:LTSlinux-oem-6.8no fix listedUBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-oracle5.15.0-1108.114UBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-oracle5.15.0-1108.114USN-8493-1
Ubuntu:24.04:LTSlinux-oracle6.8.0-1054.55UBUNTU-CVE-2026-23198
Ubuntu:25.10linux-oracleno fix listedUBUNTU-CVE-2026-23198
Ubuntu:24.04:LTSlinux-oracle-6.14no fix listedUBUNTU-CVE-2026-23198
Ubuntu:24.04:LTSlinux-oracle-6.17no fix listedUBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-oracle-6.5no fix listedUBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-oracle-6.86.8.0-1054.55~22.04.1UBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-raspi5.15.0-1105.108USN-8527-1
Ubuntu:22.04:LTSlinux-raspi5.15.0-1105.108UBUNTU-CVE-2026-23198
Ubuntu:24.04:LTSlinux-raspi6.8.0-1056.60UBUNTU-CVE-2026-23198
Ubuntu:25.10linux-raspino fix listedUBUNTU-CVE-2026-23198
Ubuntu:24.04:LTSlinux-raspi-realtimeno fix listedUBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-realtimeno fix listedUBUNTU-CVE-2026-23198
Ubuntu:24.04:LTSlinux-realtimeno fix listedUBUNTU-CVE-2026-23198
Ubuntu:25.10linux-realtimeno fix listedUBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-riscvno fix listedUBUNTU-CVE-2026-23198
Ubuntu:24.04:LTSlinux-riscvno fix listedUBUNTU-CVE-2026-23198
Ubuntu:25.10linux-riscvno fix listedUBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-riscv-5.19no fix listedUBUNTU-CVE-2026-23198
Ubuntu:24.04:LTSlinux-riscv-6.14no fix listedUBUNTU-CVE-2026-23198
Ubuntu:24.04:LTSlinux-riscv-6.17no fix listedUBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-riscv-6.5no fix listedUBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-riscv-6.86.8.0-117.117~22.04.1UBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-starfive-5.19no fix listedUBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-starfive-6.2no fix listedUBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-starfive-6.5no fix listedUBUNTU-CVE-2026-23198
Ubuntu:24.04:LTSlinux-xilinx6.8.0-1032.33UBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-xilinx-zynqmp5.15.0-1074.78UBUNTU-CVE-2026-23198
Ubuntu:22.04:LTSlinux-xilinx-zynqmp5.15.0-1074.78USN-8528-1

Affected products (as reported)

VendorProductVersions
Linux Linux f70c20aaf141adb715a2d750c55154073b02a9c3 – before 959a063e7f12524bc1871ad1f519787967bbcd45f70c20aaf141adb715a2d750c55154073b02a9c3 – before 2284bc168b148a17b5ca3b37b3d95c411f18a08df70c20aaf141adb715a2d750c55154073b02a9c3 – before 6d14ba1e144e796b5fc81044f08cfba9024ca195f70c20aaf141adb715a2d750c55154073b02a9c3 – before b61f9b2fcf181451d0a319889478cc53c001123ef70c20aaf141adb715a2d750c55154073b02a9c3 – before ff48c9312d042bfbe826ca675e98acc6c623211cf70c20aaf141adb715a2d750c55154073b02a9c3 – before 4385b2f2843549bfb932e0dcf76bf4b065543a3cf70c20aaf141adb715a2d750c55154073b02a9c3 – before b4d37cdb77a0015f51fee083598fa227cc07aaf1
Linux Linux 4.4

Weakness: CWE-416 · Vector: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

References