Skip to content
OpenAdvisories
High · 8.8 CVE-2026-31588 EUVD-2026-25481GHSA-g8q5-fwjh-4q25

KVM: x86: Use scratch field in MMIO fragment to hold small write values

Published Apr 24, 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-7.0 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: x86: Use scratch field in MMIO fragment to hold small write values

When exiting to userspace to service an emulated MMIO write, copy the
to-be-written value to a scratch field in the MMIO fragment if the size
of the data payload is 8 bytes or less, i.e. can fit in a single chunk,
instead of pointing the fragment directly at the source value.

This fixes a class of use-after-free bugs that occur when the emulator
initiates a write using an on-stack, local variable as the source, the
write splits a page boundary, *and* both pages are MMIO pages. Because
KVM's ABI only allows for physically contiguous MMIO requests, accesses
that split MMIO pages are separated into two fragments, and are sent to
userspace one at a time. When KVM attempts to complete userspace MMIO in
response to KVM_RUN after the first fragment, KVM will detect the second
fragment and generate a second userspace exit, and reference the on-stack
variable.

The issue is most visible if the second KVM_RUN is performed by a separate
task, in which case the stack of the initiating task can show up as truly
freed data.

==================================================================
BUG: KASAN: use-after-free in complete_emulated_mmio+0x305/0x420
Read of size 1 at addr ffff888009c378d1 by task syz-executor417/984

CPU: 1 PID: 984 Comm: syz-executor417 Not tainted 5.10.0-182.0.0.95.h2627.eulerosv2r13.x86_64 #3
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.15.0-0-g2dd4b9b3f840-prebuilt.qemu.org 04/01/2014 Call Trace:
dump_stack+0xbe/0xfd
print_address_description.constprop.0+0x19/0x170
__kasan_report.cold+0x6c/0x84
kasan_report+0x3a/0x50
check_memory_region+0xfd/0x1f0
memcpy+0x20/0x60
complete_emulated_mmio+0x305/0x420
kvm_arch_vcpu_ioctl_run+0x63f/0x6d0
kvm_vcpu_ioctl+0x413/0xb20
__se_sys_ioctl+0x111/0x160
do_syscall_64+0x30/0x40
entry_SYSCALL_64_after_hwframe+0x67/0xd1
RIP: 0033:0x42477d
Code: <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 b0 ff ff ff f7 d8 64 89 01 48
RSP: 002b:00007faa8e6890e8 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
RAX: ffffffffffffffda RBX: 00000000004d7338 RCX: 000000000042477d
RDX: 0000000000000000 RSI: 000000000000ae80 RDI: 0000000000000005
RBP: 00000000004d7330 R08: 00007fff28d546df R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000246 R12: 00000000004d733c
R13: 0000000000000000 R14: 000000000040a200 R15: 00007fff28d54720

The buggy address belongs to the page:
page:0000000029f6a428 refcount:0 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x9c37
flags: 0xfffffc0000000(node=0|zone=1|lastcpupid=0x1fffff)
raw: 000fffffc0000000 0000000000000000 ffffea0000270dc8 0000000000000000
raw: 0000000000000000 0000000000000000 00000000ffffffff 0000000000000000 page dumped because: kasan: bad access detected

Memory state around the buggy address:
ffff888009c37780: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ffff888009c37800: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
>ffff888009c37880: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
^
ffff888009c37900: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ffff888009c37980: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
==================================================================

The bug can also be reproduced with a targeted KVM-Unit-Test by hacking
KVM to fill a large on-stack variable in complete_emulated_mmio(), i.e. by
overwrite the data value with garbage.

Limit the use of the scratch fields to 8-byte or smaller accesses, and to
just writes, as larger accesses and reads are not affected thanks to
implementation details in the emulator, but add a sanity check to ensure
those details don't change in the future. Specifically, KVM never uses
on-stack variables for accesses larger that 8 bytes, e.g. uses an operand
in the emulator context, and *al
---truncated---

Affected products

VendorProductAffectedFixed
Linux Linux 3.5 5.10.258

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.19.14-1 —
Debian 13 linux 6.12.85-1 —
Debian 12 linux 6.1.176-1 —
ReleasePackageFixed inAdvisory
Ubuntu Nvidia-BlueField 24.04 LTS linux-bluefield 6.8.0-1028.33 —
Ubuntu Nvidia-BlueField 22.04 LTS linux-bluefield 5.15.0-1096.98 —
Ubuntu 26.04 LTS linux 7.0.0-27.27 USN-8488-1
Ubuntu 26.04 LTS linux-aws 7.0.0-1008.8 USN-8488-1
Ubuntu 26.04 LTS linux-azure 7.0.0-1010.10 USN-8603-1
Ubuntu 26.04 LTS linux-gcp +1 7.0.0-1007.7 USN-8488-1
Ubuntu 26.04 LTS linux-ibm +1 7.0.0-1009.9 USN-8603-1, USN-8488-1
Ubuntu 26.04 LTS linux-nvidia 7.0.0-1013.13 USN-8507-1
Ubuntu 26.04 LTS linux-raspi 7.0.0-1014.14 USN-8488-2
Ubuntu 26.04 LTS linux-riscv +1 7.0.0-27.27.1 USN-8488-1
Ubuntu 25.10 linux +8 No fix yet —
Ubuntu 24.04 LTS linux 6.8.0-136.136 USN-8567-1
Ubuntu 24.04 LTS linux-aws 6.8.0-1061.64 USN-8595-2
Ubuntu 24.04 LTS linux-azure 6.8.0-1063.71 USN-8606-1
Ubuntu 24.04 LTS linux-azure-fde 6.8.0-1062.69 USN-8607-1
Ubuntu 24.04 LTS linux-gcp 6.8.0-1064.72 USN-8567-1
Ubuntu 24.04 LTS linux-gke 6.8.0-1059.67 USN-8567-1
Ubuntu 24.04 LTS linux-gkeop 6.8.0-1046.50 USN-8567-1
Ubuntu 24.04 LTS linux-hwe-7.0 7.0.0-28.28~24.04.1 USN-8569-1
Ubuntu 24.04 LTS linux-ibm 6.8.0-1061.62 USN-8574-3
Ubuntu 24.04 LTS linux-lowlatency 6.8.0-136.136.2 USN-8574-2
Ubuntu 24.04 LTS linux-nvidia 6.8.0-1059.62 USN-8596-1
Ubuntu 24.04 LTS linux-nvidia-lowlatency 6.8.0-1059.62.1 USN-8596-1
Ubuntu 24.04 LTS linux-nvidia-tegra 6.8.0-1030.31 USN-8574-3
Ubuntu 24.04 LTS linux-oracle 6.8.0-1058.61 USN-8574-2
Ubuntu 24.04 LTS linux-raspi 6.8.0-1061.65 USN-8665-1
Ubuntu 24.04 LTS linux-riscv +27 No fix yet —
Ubuntu 24.04 LTS linux-vmware 6.8.0-1008.8 —
Ubuntu 24.04 LTS linux-xilinx 6.8.0-1033.34 USN-8574-3
Show 19 more (older releases, extended support, other products)
ReleasePackageFixed inAdvisory
Ubuntu 22.04 LTS linux 5.15.0-186.196 USN-8575-1
Ubuntu 22.04 LTS linux-aws 5.15.0-1112.119 USN-8575-2
Ubuntu 22.04 LTS linux-aws-6.8 6.8.0-1061.64~22.04.1 USN-8595-3
Ubuntu 22.04 LTS linux-azure +1 5.15.0-1117.126 USN-8610-1, USN-8575-3
Ubuntu 22.04 LTS linux-azure-6.8 6.8.0-1063.71~22.04.1 USN-8606-1
Ubuntu 22.04 LTS linux-azure-fde-6.8 6.8.0-1062.69~22.04.1 USN-8609-1
Ubuntu 22.04 LTS linux-gcp 5.15.0-1112.122 USN-8575-1
Ubuntu 22.04 LTS linux-gcp-6.8 6.8.0-1064.72~22.04.1 USN-8567-1
Ubuntu 22.04 LTS linux-gke 5.15.0-1108.114 USN-8575-1
Ubuntu 22.04 LTS linux-gkeop 5.15.0-1095.103 USN-8575-1
Ubuntu 22.04 LTS linux-hwe-6.8 6.8.0-136.136~22.04.1 USN-8619-1
Ubuntu 22.04 LTS linux-ibm 5.15.0-1106.110 USN-8575-2
Ubuntu 22.04 LTS linux-ibm-6.8 6.8.0-1061.62~22.04.1 USN-8574-3
Ubuntu 22.04 LTS linux-intel-iotg 5.15.0-1107.113 USN-8620-4
Ubuntu 22.04 LTS linux-kvm 5.15.0-1104.109 USN-8575-1
Ubuntu 22.04 LTS linux-lowlatency 5.15.0-184.194 USN-8575-1
Ubuntu 22.04 LTS linux-lowlatency-hwe-6.8 6.8.0-136.136.2~22.04.1 USN-8574-2
Ubuntu 22.04 LTS linux-nvidia 5.15.0-1107.108 USN-8575-2
Ubuntu 22.04 LTS linux-nvidia-6.8 6.8.0-1059.62~22.04.1 USN-8596-1
Ubuntu 22.04 LTS linux-nvidia-tegra 5.15.0-1064.66 USN-8576-2
Ubuntu 22.04 LTS linux-nvidia-tegra-igx 5.15.0-1053.53 USN-8576-2
Ubuntu 22.04 LTS linux-oracle 5.15.0-1109.115 USN-8575-3
Ubuntu 22.04 LTS linux-oracle-6.8 6.8.0-1058.61~22.04.1 USN-8595-1
Ubuntu 22.04 LTS linux-raspi 5.15.0-1106.109 USN-8668-2
Ubuntu 22.04 LTS linux-riscv +32 No fix yet —
Ubuntu 22.04 LTS linux-riscv-6.8 6.8.0-136.136~22.04.3 —
Ubuntu 22.04 LTS linux-xilinx-zynqmp 5.15.0-1075.79 USN-8575-1
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-2050.52 USN-8665-1
Ubuntu Pro Realtime 24.04 LTS linux-realtime 6.8.1-1056.57 USN-8567-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-1104.106 USN-8620-3
Ubuntu Pro Realtime 22.04 LTS linux-realtime 5.15.0-1111.120 USN-8575-1
Ubuntu Pro Realtime 22.04 LTS linux-realtime-6.8 6.8.1-1056.57~22.04.2 USN-8567-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-1061.64+fips1 USN-8595-3
Ubuntu Pro FIPS-updates 24.04 LTS linux-azure-fips 6.8.0-1063.71+fips2 USN-8608-1
Ubuntu Pro FIPS-updates 24.04 LTS linux-fips 6.8.0-136.136+fips2 USN-8574-2
Ubuntu Pro FIPS-updates 24.04 LTS linux-gcp-fips 6.8.0-1064.72+fips1 USN-8574-1
Ubuntu Pro FIPS-updates 22.04 LTS linux-aws-fips 5.15.0-1112.119+fips1 USN-8575-2
Ubuntu Pro FIPS-updates 22.04 LTS linux-azure-fips 5.15.0-1117.126+fips1 USN-8620-2
Ubuntu Pro FIPS-updates 22.04 LTS linux-fips 5.15.0-186.196+fips1 USN-8575-2
Ubuntu Pro FIPS-updates 22.04 LTS linux-gcp-fips 5.15.0-1112.122+fips1 USN-8575-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-1112.119~20.04.1 USN-8575-2
Ubuntu Pro 20.04 LTS linux-azure-5.15 5.15.0-1117.126~20.04.1 USN-8620-1
Ubuntu Pro 20.04 LTS linux-azure-fde-5.15 5.15.0-1117.126~20.04.2 USN-8620-1
Ubuntu Pro 20.04 LTS linux-gcp-5.15 5.15.0-1112.122~20.04.1 USN-8668-1
Ubuntu Pro 20.04 LTS linux-hwe-5.15 5.15.0-186.196~20.04.1 USN-8575-1
Ubuntu Pro 20.04 LTS linux-ibm-5.15 +1 5.15.0-1106.110~20.04.1 USN-8597-1
Ubuntu Pro 20.04 LTS linux-intel-iotg-5.15 5.15.0-1107.113~20.04.1 USN-8620-3
Ubuntu Pro 20.04 LTS linux-lowlatency-hwe-5.15 5.15.0-184.194~20.04.1 USN-8575-1
Ubuntu Pro 20.04 LTS linux-nvidia-tegra-5.15 5.15.0-1064.66~20.04.1 USN-8576-1
Ubuntu Pro 20.04 LTS linux-oracle-5.15 5.15.0-1109.115~20.04.1 USN-8620-1
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 +3 No fix yet —
ReleasePackageFixed inAdvisory
SLES 15 SP7 kernel-64kb +7 6.4.0-150700.53.55.1 SUSE-SU-2026:2238-1
SLES 15 SP7 kernel-default-base 6.4.0-150700.53.55.1.150700.17.33.1 SUSE-SU-2026:2238-1
SLES 15 SP6 kernel-64kb +6 6.4.0-150600.23.112.1 SUSE-SU-2026:2195-1
SLES 15 SP6 kernel-default-base 6.4.0-150600.23.112.1.150600.12.52.1 SUSE-SU-2026:2195-1
SLES 12 SP5 kernel-syms +2 4.12.14-122.317.1 SUSE-SU-2026:2450-1
Show 5 more (older releases, extended support, other products)
ReleasePackageFixed inAdvisory
SLES for SAP 15 SP6 kernel-default-base 6.4.0-150600.23.112.1.150600.12.52.1 SUSE-SU-2026:2195-1
SLES for SAP 15 SP6 kernel-docs +4 6.4.0-150600.23.112.1 SUSE-SU-2026:2195-1
SLE Micro 6.2 kernel-syms +1 6.12.0-160000.33.1 SUSE-SU-2026:21834-1
SLE Live Patching 15 SP7 kernel-default 6.4.0-150700.53.55.1 SUSE-SU-2026:2238-1
SLE Live Patching 15 SP7 kernel-livepatch-SLE15-SP7_Update_15 1-150700.15.3.1 SUSE-SU-2026:2238-1
SLE Live Patching 15 SP6 kernel-default 6.4.0-150600.23.112.1 SUSE-SU-2026:2195-1
SLE Live Patching 15 SP6 kernel-livepatch-SLE15-SP6_Update_26 1-150600.13.3.1 SUSE-SU-2026:2195-1
SLE Live Patching 12 SP5 kernel-default 4.12.14-122.317.1 SUSE-SU-2026:2450-1
SLE Live Patching 12 SP5 kgraft-patch-SLE12-SP5_Update_84 1-8.7.1 SUSE-SU-2026:2450-1
ReleasePackageFixed inAdvisory
openSUSE Tumbleweed kernel-source 7.0.3-1.1 openSUSE-SU-2026:10703-1

Amazon Linux

ReleasePackageFixed inAdvisory
Amazon Linux 2023 kernel-livepatch-6.18.25-55.108 +2 1:1.0-0.amzn2023 ALAS2023-2026-1882, ALAS2023-2026-1695, ALAS2023-2026-1693
Amazon Linux 2023 perf +11 1:6.1.175-219.357.amzn2023 ALAS2023-2026-1882
Amazon Linux 2023 perf6.12 +11 1:6.12.83-113.160.amzn2023 ALAS2023-2026-1695
Amazon Linux 2023 perf6.18 +11 1:6.18.25-55.108.amzn2023 ALAS2023-2026-1693

Azure Linux

ReleasePackageFixed inAdvisory
Azure Linux 3 kernel 6.6.137.1-1 —

Oracle Linux

ReleasePackageFixed inAdvisory
Oracle Linux 9 kernel-uek +34 6.12.0-204.92.4.2.el10uek ELSA-2026-50372
Oracle Linux 7 kernel-uek +6 5.4.17-2136.360.3.el8uek ELSA-2026-500375
Oracle Linux 7 kernel-uek-tools 5.4.17-2136.360.3.el7uek ELSA-2026-500375

Advisories 43

References