Skip to content
OpenAdvisories
High · 7.8 CVE-2026-23198 EUVD-2026-5846GHSA-68jg-6v9h-662h

KVM: Don't clobber irqfd routing type when deassigning irqfd

Published Feb 14, 2026 · Updated Oct 19, 2026 · Assigned by Linux

Vendor: Linux Product: Linux Package: kernel Package: linux Package: linux Package: linux-allwinner-5.19 Package: linux-aws Package: linux-aws-5.0 Package: linux-aws-5.11 Package: linux-aws-5.13 Package: linux-aws-5.15 Package: linux-aws-5.19 Package: linux-aws-5.3 Package: linux-aws-5.4 Package: linux-aws-5.8 Package: linux-aws-6.14 Package: linux-aws-6.17 Package: linux-aws-6.2 Package: linux-aws-6.5 Package: linux-aws-6.8 Package: linux-aws-fips Package: linux-aws-hwe Package: linux-azure Package: linux-azure-4.15 Package: linux-azure-5.11 Package: linux-azure-5.13 Package: linux-azure-5.15 Package: linux-azure-5.19 Package: linux-azure-5.3 Package: linux-azure-5.4 Package: linux-azure-5.8 Package: linux-azure-6.11 Package: linux-azure-6.14 Package: linux-azure-6.17 Package: linux-azure-6.2 Package: linux-azure-6.5 Package: linux-azure-6.8 Package: linux-azure-edge Package: linux-azure-fde Package: linux-azure-fde-5.15 Package: linux-azure-fde-5.19 Package: linux-azure-fde-6.14 Package: linux-azure-fde-6.2 Package: linux-azure-fde-6.8 Package: linux-azure-fips Package: linux-azure-nvidia Package: linux-azure-nvidia-6.14 Package: linux-bluefield Package: linux-fips Package: linux-gcp Package: linux-gcp-4.15 Package: linux-gcp-5.11 Package: linux-gcp-5.13 Package: linux-gcp-5.15 Package: linux-gcp-5.19 Package: linux-gcp-5.3 Package: linux-gcp-5.4 Package: linux-gcp-5.8 Package: linux-gcp-6.11 Package: linux-gcp-6.14 Package: linux-gcp-6.17 Package: linux-gcp-6.2 Package: linux-gcp-6.5 Package: linux-gcp-6.8 Package: linux-gcp-fips Package: linux-gke Package: linux-gke-4.15 Package: linux-gke-5.15 Package: linux-gke-5.4 Package: linux-gkeop Package: linux-gkeop-5.15 Package: linux-gkeop-5.4 Package: linux-hwe Package: linux-hwe-5.11 Package: linux-hwe-5.13 Package: linux-hwe-5.15 Package: linux-hwe-5.19 Package: linux-hwe-5.4 Package: linux-hwe-5.8 Package: linux-hwe-6.11 Package: linux-hwe-6.14 Package: linux-hwe-6.17 Package: linux-hwe-6.2 Package: linux-hwe-6.5 Package: linux-hwe-6.8 Package: linux-hwe-edge Package: linux-ibm Package: linux-ibm-5.15 Package: linux-ibm-5.4 Package: linux-ibm-6.8 Package: linux-intel-5.13 Package: linux-intel-iot-realtime Package: linux-intel-iotg Package: linux-intel-iotg-5.15 Package: linux-iot Package: linux-kvm Package: linux-lowlatency Package: linux-lowlatency-hwe-5.15 Package: linux-lowlatency-hwe-5.19 Package: linux-lowlatency-hwe-6.11 Package: linux-lowlatency-hwe-6.2 Package: linux-lowlatency-hwe-6.5 Package: linux-lowlatency-hwe-6.8 Package: linux-lts-xenial Package: linux-nvidia Package: linux-nvidia-6.11 Package: linux-nvidia-6.17 Package: linux-nvidia-6.2 Package: linux-nvidia-6.5 Package: linux-nvidia-6.8 Package: linux-nvidia-lowlatency Package: linux-nvidia-tegra Package: linux-nvidia-tegra-5.15 Package: linux-nvidia-tegra-igx Package: linux-oem Package: linux-oem-5.10 Package: linux-oem-5.13 Package: linux-oem-5.14 Package: linux-oem-5.17 Package: linux-oem-5.6 Package: linux-oem-6.0 Package: linux-oem-6.1 Package: linux-oem-6.11 Package: linux-oem-6.14 Package: linux-oem-6.17 Package: linux-oem-6.5 Package: linux-oem-6.8 Package: linux-oracle Package: linux-oracle-5.0 Package: linux-oracle-5.11 Package: linux-oracle-5.13 Package: linux-oracle-5.15 Package: linux-oracle-5.3 Package: linux-oracle-5.4 Package: linux-oracle-5.8 Package: linux-oracle-6.14 Package: linux-oracle-6.17 Package: linux-oracle-6.5 Package: linux-oracle-6.8 Package: linux-raspi Package: linux-raspi-5.4 Package: linux-raspi-realtime Package: linux-raspi2 Package: linux-realtime Package: linux-realtime-6.14 Package: linux-realtime-6.17 Package: linux-realtime-6.8 Package: linux-riscv Package: linux-riscv-5.11 Package: linux-riscv-5.15 Package: linux-riscv-5.19 Package: linux-riscv-5.8 Package: linux-riscv-6.14 Package: linux-riscv-6.17 Package: linux-riscv-6.5 Package: linux-riscv-6.8 Package: linux-starfive-5.19 Package: linux-starfive-6.2 Package: linux-starfive-6.5 Package: linux-vmware Package: linux-xilinx Package: linux-xilinx-zynqmp Platform: Linux Ecosystem: Azure Linux Ecosystem: Debian Ecosystem: Ubuntu

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 products

VendorProductAffectedFixed
Linux Linux 4.4 5.10.250

Fixed in Linux distributions

Distributions backport fixes, so the version that fixes this vulnerability differs per release — upgrade to at least the version shown. From the distributions' security trackers and advisories.

ReleasePackageFixed inAdvisory
Debian 14 linux 6.18.10-1 —
Debian 13 linux 6.12.73-1 DSA-6141-1
Debian 12 linux 6.1.164-1 DSA-6163-1
Debian 11 linux 5.10.251-1 DLA-4498-1
Debian 11 linux-6.1 6.1.164-1~deb11u1 DLA-4499-1
ReleasePackageFixed inAdvisory
Ubuntu Nvidia-BlueField 24.04 LTS linux-bluefield 6.8.0-1022.26 —
Ubuntu Nvidia-BlueField 22.04 LTS linux-bluefield 5.15.0-1095.97 —
Ubuntu 25.10 linux +8 No fix yet —
Ubuntu 24.04 LTS linux 6.8.0-117.117 USN-8278-1
Ubuntu 24.04 LTS linux-aws 6.8.0-1055.58 USN-8278-1
Ubuntu 24.04 LTS linux-azure 6.8.0-1056.62 USN-8278-2
Ubuntu 24.04 LTS linux-azure-fde 6.8.0-1058.65 —
Ubuntu 24.04 LTS linux-azure-nvidia 6.8.0-1039.42 —
Ubuntu 24.04 LTS linux-gcp 6.8.0-1058.61 USN-8278-1
Ubuntu 24.04 LTS linux-gke 6.8.0-1054.60 USN-8278-1
Ubuntu 24.04 LTS linux-gkeop 6.8.0-1041.44 USN-8278-1
Ubuntu 24.04 LTS linux-ibm 6.8.0-1055.56 USN-8278-1
Ubuntu 24.04 LTS linux-lowlatency 6.8.0-117.117.1 USN-8278-1
Ubuntu 24.04 LTS linux-nvidia 6.8.0-1054.57 USN-8289-1
Ubuntu 24.04 LTS linux-nvidia-lowlatency 6.8.0-1054.57.1 USN-8289-1
Ubuntu 24.04 LTS linux-nvidia-tegra 6.8.0-1024.24 USN-8296-2
Ubuntu 24.04 LTS linux-oracle 6.8.0-1054.55 —
Ubuntu 24.04 LTS linux-raspi 6.8.0-1056.60 USN-8278-1
Ubuntu 24.04 LTS linux-riscv +26 No fix yet —
Ubuntu 24.04 LTS linux-xilinx 6.8.0-1032.33 USN-8499-1
Ubuntu 22.04 LTS linux 5.15.0-185.195 USN-8493-1
Ubuntu 22.04 LTS linux-aws 5.15.0-1111.118 USN-8493-1
Ubuntu 22.04 LTS linux-aws-6.8 6.8.0-1057.60~22.04.1 —
Ubuntu 22.04 LTS linux-azure +1 5.15.0-1116.125 USN-8493-1
Ubuntu 22.04 LTS linux-azure-6.8 6.8.0-1059.65~22.04.1 USN-8440-1
Ubuntu 22.04 LTS linux-azure-fde-6.8 6.8.0-1058.65~22.04.1 —
Ubuntu 22.04 LTS linux-gcp 5.15.0-1111.121 USN-8493-1
Ubuntu 22.04 LTS linux-gcp-6.8 6.8.0-1060.63~22.04.1 —
Ubuntu 22.04 LTS linux-gke 5.15.0-1107.113 USN-8493-1
Ubuntu 22.04 LTS linux-gkeop 5.15.0-1094.102 USN-8493-1
Ubuntu 22.04 LTS linux-hwe-6.8 6.8.0-124.124~22.04.1 —
Ubuntu 22.04 LTS linux-ibm 5.15.0-1105.109 USN-8493-1
Ubuntu 22.04 LTS linux-ibm-6.8 6.8.0-1055.56~22.04.1 USN-8278-1
Ubuntu 22.04 LTS linux-intel-iotg 5.15.0-1106.112 USN-8493-1
Ubuntu 22.04 LTS linux-kvm 5.15.0-1103.108 USN-8493-1
Ubuntu 22.04 LTS linux-lowlatency 5.15.0-183.193 USN-8493-1
Ubuntu 22.04 LTS linux-lowlatency-hwe-6.8 6.8.0-117.117.1~22.04.1 USN-8278-1
Ubuntu 22.04 LTS linux-nvidia 5.15.0-1106.107 USN-8493-1
Ubuntu 22.04 LTS linux-nvidia-6.8 6.8.0-1054.57~22.04.1 USN-8289-2
Ubuntu 22.04 LTS linux-nvidia-tegra 5.15.0-1063.63 USN-8493-1
Ubuntu 22.04 LTS linux-nvidia-tegra-igx 5.15.0-1052.52 USN-8493-1
Ubuntu 22.04 LTS linux-oracle 5.15.0-1108.114 USN-8493-1
Ubuntu 22.04 LTS linux-oracle-6.8 6.8.0-1054.55~22.04.1 —
Ubuntu 22.04 LTS linux-raspi 5.15.0-1105.108 USN-8527-1
Ubuntu 22.04 LTS linux-riscv +32 No fix yet —
Ubuntu 22.04 LTS linux-riscv-6.8 6.8.0-117.117~22.04.1 —
Ubuntu 22.04 LTS linux-xilinx-zynqmp 5.15.0-1074.78 USN-8528-1
Show 18 more (older releases, extended support, other products)
ReleasePackageFixed inAdvisory
Ubuntu 20.04 LTS linux-gke +28 No fix yet —
Ubuntu 18.04 LTS linux-gcp +14 No fix yet —
Ubuntu 16.04 LTS linux-hwe-edge No fix yet —
Ubuntu Pro Realtime 24.04 LTS linux-raspi-realtime 6.8.0-2045.46 USN-8278-1
Ubuntu Pro Realtime 24.04 LTS linux-realtime 6.8.1-1051.52 USN-8278-1
Ubuntu Pro Realtime 24.04 LTS linux-realtime-6.14 +1 No fix yet —
Ubuntu Pro Realtime 22.04 LTS linux-intel-iot-realtime 5.15.0-1103.105 USN-8493-1
Ubuntu Pro Realtime 22.04 LTS linux-realtime 5.15.0-1110.119 USN-8493-1
Ubuntu Pro Realtime 22.04 LTS linux-realtime-6.8 6.8.1-1051.52~22.04.1 USN-8278-1
Ubuntu Pro FIPS 20.04 LTS linux-fips +3 No fix yet —
Ubuntu Pro FIPS 18.04 LTS linux-fips +3 No fix yet —
Ubuntu Pro FIPS 16.04 LTS linux-fips No fix yet —
Ubuntu Pro FIPS-updates 24.04 LTS linux-aws-fips 6.8.0-1055.58+fips1 USN-8278-1
Ubuntu Pro FIPS-updates 24.04 LTS linux-azure-fips 6.8.0-1059.65+fips1 USN-8393-1
Ubuntu Pro FIPS-updates 24.04 LTS linux-fips 6.8.0-116.116+fips1 USN-8296-1
Ubuntu Pro FIPS-updates 24.04 LTS linux-gcp-fips 6.8.0-1058.61+fips1 USN-8278-1
Ubuntu Pro FIPS-updates 22.04 LTS linux-aws-fips 5.15.0-1111.118+fips1 USN-8493-1
Ubuntu Pro FIPS-updates 22.04 LTS linux-azure-fips 5.15.0-1116.125+fips1 USN-8547-2
Ubuntu Pro FIPS-updates 22.04 LTS linux-fips 5.15.0-185.195+fips1 USN-8493-1
Ubuntu Pro FIPS-updates 22.04 LTS linux-gcp-fips 5.15.0-1111.121+fips1 USN-8493-1
Ubuntu Pro FIPS-updates 20.04 LTS linux-fips +3 No fix yet —
Ubuntu Pro FIPS-updates 18.04 LTS linux-fips +3 No fix yet —
Ubuntu Pro FIPS-updates 16.04 LTS linux-fips No fix yet —
Ubuntu Pro FIPS-preview 22.04 LTS linux-fips +3 No fix yet —
Ubuntu Pro 20.04 LTS linux +10 No fix yet —
Ubuntu Pro 20.04 LTS linux-aws-5.15 5.15.0-1111.118~20.04.1 USN-8493-1
Ubuntu Pro 20.04 LTS linux-azure-5.15 +1 5.15.0-1116.125~20.04.1 USN-8493-1
Ubuntu Pro 20.04 LTS linux-gcp-5.15 5.15.0-1111.121~20.04.1 USN-8547-1
Ubuntu Pro 20.04 LTS linux-hwe-5.15 5.15.0-185.195~20.04.1 USN-8493-1
Ubuntu Pro 20.04 LTS linux-ibm-5.15 +1 5.15.0-1105.109~20.04.1 USN-8493-1
Ubuntu Pro 20.04 LTS linux-intel-iotg-5.15 5.15.0-1106.112~20.04.1 USN-8547-1
Ubuntu Pro 20.04 LTS linux-lowlatency-hwe-5.15 5.15.0-183.193~20.04.1 USN-8493-1
Ubuntu Pro 20.04 LTS linux-nvidia-tegra-5.15 5.15.0-1063.63~20.04.1 USN-8493-1
Ubuntu Pro 20.04 LTS linux-oracle-5.15 5.15.0-1108.114~20.04.1 USN-8493-2
Ubuntu Pro 18.04 LTS linux +12 No fix yet —
Ubuntu Pro 16.04 LTS linux +7 No fix yet —
Ubuntu Pro 14.04 LTS linux-aws +2 No fix yet —
ReleasePackageFixed inAdvisory
SLES 15 SP7 kernel-64kb +7 6.4.0-150700.53.34.1 SUSE-SU-2026:1081-1
SLES 15 SP7 kernel-default-base 6.4.0-150700.53.34.1.150700.17.23.1 SUSE-SU-2026:1081-1
SLES 12 SP5 kernel-syms +2 4.12.14-122.296.1 SUSE-SU-2026:1078-1
Show 8 more (older releases, extended support, other products)
ReleasePackageFixed inAdvisory
SLES for SAP 16.0 kernel-64kb +8 6.12.0-160000.27.1 SUSE-SU-2026:20931-1
SLES for SAP 16.0 kernel-default-base 6.12.0-160000.27.1.160000.2.8 SUSE-SU-2026:20931-1
SLES 16.0 kernel-64kb +8 6.12.0-160000.27.1 SUSE-SU-2026:20931-1
SLES 16.0 kernel-default-base 6.12.0-160000.27.1.160000.2.8 SUSE-SU-2026:20931-1
SLE Micro 6.2 kernel-default-base 6.12.0-160000.27.1.160000.2.8 SUSE-SU-2026:20838-1
SLE Micro 6.2 kernel-rt +5 6.12.0-160000.27.1 SUSE-SU-2026:20873-1, SUSE-SU-2026:20838-1
SLE Micro 6.1 kernel-default-base 6.4.0-40.1.21.17 SUSE-SU-2026:20667-1
SLE Micro 6.1 kernel-rt +4 6.4.0-40.1 SUSE-SU-2026:20876-1, SUSE-SU-2026:20667-1
SLE Micro 6.0 kernel-default-base 6.4.0-40.1.21.17 SUSE-SU-2026:20720-1
SLE Micro 6.0 kernel-rt +4 6.4.0-40.1 SUSE-SU-2026:20845-1, SUSE-SU-2026:20720-1
SLE Live Patching 15 SP7 kernel-default 6.4.0-150700.53.34.1 SUSE-SU-2026:1081-1
SLE Live Patching 15 SP7 kernel-livepatch-SLE15-SP7-RT_Update_10 1-150700.1.3.1 SUSE-SU-2026:0962-1
SLE Live Patching 15 SP7 kernel-livepatch-SLE15-SP7_Update_10 1-150700.15.3.1 SUSE-SU-2026:1081-1
SLE Live Patching 12 SP5 kernel-default 4.12.14-122.296.1 SUSE-SU-2026:1078-1
SLE Live Patching 12 SP5 kgraft-patch-SLE12-SP5_Update_78 1-8.3.1 SUSE-SU-2026:1078-1
SUSE Real Time Module 15 SP7 kernel-rt +2 6.4.0-150700.7.34.1 SUSE-SU-2026:0962-1
ReleasePackageFixed inAdvisory
openSUSE Leap 16.0 kernel-default-base 6.12.0-160000.27.1.160000.2.8 openSUSE-SU-2026:20416-1
openSUSE Leap 16.0 kernel-rt +11 6.12.0-160000.27.1 openSUSE-SU-2026:20416-1

Amazon Linux

ReleasePackageFixed inAdvisory
Amazon Linux 2023 kernel-livepatch-6.12.73-95.123 +1 1:1.0-0.amzn2023 ALAS2023-2026-1487, ALAS2023-2026-1468
Amazon Linux 2023 perf +14 1:6.1.163-186.299.amzn2023 ALAS2023-2026-1468
Amazon Linux 2023 perf6.12 +14 1:6.12.73-95.123.amzn2023 ALAS2023-2026-1487

Azure Linux

ReleasePackageFixed inAdvisory
Azure Linux 3 kernel 6.6.126.1-1 —

Oracle Linux

ReleasePackageFixed inAdvisory
Oracle Linux 9 kernel-uek +34 6.12.0-200.74.27.el10uek ELSA-2026-50372, ELSA-2026-50160

Advisories 35

References