In the Linux kernel, the following vulnerability has been resolved:
x86/fpu: Clear XSTATE_BV[i] in guest XSAVE state whenever XFD[i]=1
When loading guest XSAVE state via KVM_SET_XSAVE, and when updating XFD in response to a guest WRMSR, clear XFD-disabled features in the saved (or to be restored) XSTATE_BV to ensure KVM doesn't attempt to load state for features that are disabled via the guest's XFD. Because the kernel executes XRSTOR with the guest's XFD, saving XSTATE_BV[i]=1 with XFD[i]=1 will cause XRSTOR to #NM and panic the kernel.
E.g. if fpu_update_guest_xfd() sets XFD without clearing XSTATE_BV:
------------[ cut here ]------------ WARNING: arch/x86/kernel/traps.c:1524 at exc_device_not_available+0x101/0x110, CPU#29: amx_test/848 Modules linked in: kvm_intel kvm irqbypass CPU: 29 UID: 1000 PID: 848 Comm: amx_test Not tainted 6.19.0-rc2-ffa07f7fd437-x86_amx_nm_xfd_non_init-vm #171 NONE Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015 RIP: 0010:exc_device_not_available+0x101/0x110 Call Trace: <TASK> asm_exc_device_not_available+0x1a/0x20 RIP: 0010:restore_fpregs_from_fpstate+0x36/0x90 switch_fpu_return+0x4a/0xb0 kvm_arch_vcpu_ioctl_run+0x1245/0x1e40 [kvm] kvm_vcpu_ioctl+0x2c3/0x8f0 [kvm] __x64_sys_ioctl+0x8f/0xd0 do_syscall_64+0x62/0x940 entry_SYSCALL_64_after_hwframe+0x4b/0x53 </TASK> ---[ end trace 0000000000000000 ]---
This can happen if the guest executes WRMSR(MSR_IA32_XFD) to set XFD[18] = 1, and a host IRQ triggers kernel_fpu_begin() prior to the vmexit handler's call to fpu_update_guest_xfd().
and if userspace stuffs XSTATE_BV[i]=1 via KVM_SET_XSAVE:
------------[ cut here ]------------ WARNING: arch/x86/kernel/traps.c:1524 at exc_device_not_available+0x101/0x110, CPU#14: amx_test/867 Modules linked in: kvm_intel kvm irqbypass CPU: 14 UID: 1000 PID: 867 Comm: amx_test Not tainted 6.19.0-rc2-2dace9faccd6-x86_amx_nm_xfd_non_init-vm #168 NONE Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015 RIP: 0010:exc_device_not_available+0x101/0x110 Call Trace: <TASK> asm_exc_device_not_available+0x1a/0x20 RIP: 0010:restore_fpregs_from_fpstate+0x36/0x90 fpu_swap_kvm_fpstate+0x6b/0x120 kvm_load_guest_fpu+0x30/0x80 [kvm] kvm_arch_vcpu_ioctl_run+0x85/0x1e40 [kvm] kvm_vcpu_ioctl+0x2c3/0x8f0 [kvm] __x64_sys_ioctl+0x8f/0xd0 do_syscall_64+0x62/0x940 entry_SYSCALL_64_after_hwframe+0x4b/0x53 </TASK> ---[ end trace 0000000000000000 ]---
The new behavior is consistent with the AMX architecture. Per Intel's SDM, XSAVE saves XSTATE_BV as '0' for components that are disabled via XFD (and non-compacted XSAVE saves the initial configuration of the state component):
If XSAVE, XSAVEC, XSAVEOPT, or XSAVES is saving the state component i, the instruction does not generate #NM when XCR0[i] = IA32_XFD[i] = 1; instead, it operates as if XINUSE[i] = 0 (and the state component was in its initial state): it saves bit i of XSTATE_BV field of the XSAVE header as 0; in addition, XSAVE saves the initial configuration of the state component (the other instructions do not save state component i).
Alternatively, KVM could always do XRSTOR with XFD=0, e.g. by using a constant XFD based on the set of enabled features when XSAVEing for a struct fpu_guest. However, having XSTATE_BV[i]=1 for XFD-disabled features can only happen in the above interrupt case, or in similar scenarios involving preemption on preemptible kernels, because fpu_swap_kvm_fpstate()'s call to save_fpregs_to_fpstate() saves the outgoing FPU state with the current XFD; and that is (on all but the first WRMSR to XFD) the guest XFD.
Therefore, XFD can only go out of sync with XSTATE_BV in the above interrupt case, or in similar scenarios involving preemption on preemptible kernels, and it we can consider it (de facto) part of KVM ABI that KVM_GET_XSAVE returns XSTATE_BV[i]=0 for XFD-disabled features.
[Move clea ---truncated---
Covered by Rapid7
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Amazon_linux_2023 | — | Upgrade kernel6.12-tools-develUpgrade kernel-headersUpgrade kernel-debuginfo-common-aarch64Upgrade kernel6.12-debuginfo-common-aarch64Upgrade kernel6.12-libbpf-staticUpgrade kernel-develUpgrade kernel6.12-toolsUpgrade python3-perf6.12Upgrade bpftool6.12-debuginfoUpgrade python3-perfUpgrade python3-perf6.12-debuginfoUpgrade kernel-tools-develUpgrade perfUpgrade kernel6.12-tools-debuginfoUpgrade kernel6.12-modules-extraUpgrade perf6.12-debuginfoUpgrade kernel6.12-libbpf-develUpgrade bpftool6.12Upgrade kernel6.12-debuginfoUpgrade kernel-modules-extra-commonUpgrade perf-debuginfoUpgrade kernel6.12-libbpfUpgrade kernel-debuginfo-common-x86_64Upgrade kernel-libbpfUpgrade kernel-libbpf-debuginfoUpgrade kernel6.12-modules-extra-commonUpgrade kernel-toolsUpgrade kernel-libbpf-develUpgrade kernel-debuginfoUpgrade bpftoolUpgrade kernel6.12-develUpgrade kernel-tools-debuginfoUpgrade kernel6.12Upgrade kernel-libbpf-staticUpgrade perf6.12Upgrade bpftool-debuginfoUpgrade python3-perf-debuginfoUpgrade kernel6.12-libbpf-debuginfoUpgrade kernel6.12-debuginfo-common-x86_64Upgrade kernel-livepatch-6.12.68-92.122Upgrade kernel-livepatch-6.1.163-186.299Upgrade kernelUpgrade kernel6.12-headersUpgrade kernel-modules-extra | Mar 9, 2026 | Jan 25, 2026 |
| Debian | — | Upgrade linuxUpgrade linux-6.1 | Feb 11, 2026 | Feb 11, 2026 |
| Oracle_linux | — | Upgrade kernel-uek | Mar 12, 2026 | Jan 25, 2026 |
| Redhat_linux | — | No solution exists | Jul 17, 2026 | Jan 25, 2026 |
| Suse | — | Upgrade ocfs2-kmp-64kbUpgrade ocfs2-kmp-rtUpgrade dtb-appleUpgrade dtb-marvellUpgrade kernel-azure-vdsoUpgrade kernel-default-extraUpgrade kernel-rtUpgrade kernel-devel-azureUpgrade dtb-freescaleUpgrade kernel-rt-optionalUpgrade kernel-defaultUpgrade kernel-zfcpdumpUpgrade kernel-azureUpgrade kselftests-kmp-rtUpgrade kernel-azure-develUpgrade kernel-rt-extraUpgrade kernel-default-livepatchUpgrade kernel-64kbUpgrade dtb-apmUpgrade kernel-kvmsmall-develUpgrade cluster-md-kmp-azureUpgrade kernel-obs-qaUpgrade kernel-azure-extraUpgrade kernel-syms-azureUpgrade dlm-kmp-azureUpgrade dlm-kmp-defaultUpgrade kernel-kvmsmallUpgrade kernel-macrosUpgrade dtb-amlogicUpgrade kselftests-kmp-defaultUpgrade dtb-broadcomUpgrade dtb-socionextUpgrade dtb-nvidiaUpgrade kselftests-kmp-azureUpgrade kernel-docsUpgrade kernel-obs-buildUpgrade kernel-docs-htmlUpgrade kernel-rt-vdsoUpgrade cluster-md-kmp-defaultUpgrade kernel-kvmsmall-vdsoUpgrade dtb-amazonUpgrade kernel-default-develUpgrade gfs2-kmp-rtUpgrade kernel-sourceUpgrade kernel-azure-optionalUpgrade cluster-md-kmp-rtUpgrade gfs2-kmp-azureUpgrade kernel-default-vdsoUpgrade dlm-kmp-rtUpgrade kernel-source-vanillaUpgrade dtb-rockchipUpgrade dtb-amdUpgrade dtb-xilinxUpgrade gfs2-kmp-64kbUpgrade dtb-qcomUpgrade kernel-default-optionalUpgrade dtb-lgUpgrade kernel-develUpgrade dtb-mediatekUpgrade kernel-64kb-develUpgrade dtb-renesasUpgrade dtb-exynosUpgrade dtb-caviumUpgrade ocfs2-kmp-defaultUpgrade dtb-allwinnerUpgrade ocfs2-kmp-azureUpgrade dtb-sprdUpgrade dtb-alteraUpgrade kernel-source-azureUpgrade dlm-kmp-64kbUpgrade kernel-rt-develUpgrade kernel-64kb-optionalUpgrade dtb-armUpgrade cluster-md-kmp-64kbUpgrade dtb-hisiliconUpgrade reiserfs-kmp-defaultUpgrade kernel-symsUpgrade gfs2-kmp-defaultUpgrade kernel-64kb-extraUpgrade kselftests-kmp-64kbUpgrade kernel-default-base | Feb 12, 2026 | Feb 12, 2026 |
| Ubuntu | — | Upgrade linux-image-lowlatency-6.8Upgrade linux-image-raspi-6.8Upgrade linux-image-gke-64kUpgrade linux-image-gcp-64k-6.17Upgrade linux-image-6.8.0-1058-gcp-fipsUpgrade linux-image-6.8.0-117-generic-64kUpgrade linux-image-nvidia-hwe-22.04Upgrade linux-image-nvidia-64k-hwe-22.04Upgrade linux-image-nvidia-lowlatency-64kUpgrade linux-image-nvidia-6.17Upgrade linux-image-virtual-6.8Upgrade linux-image-lowlatency-hwe-22.04Upgrade linux-image-generic-64k-6.8Upgrade linux-image-6.17.0-1021-gcp-64kUpgrade linux-image-azure-fde-6.17Upgrade linux-image-nvidia-lowlatency-6.8Upgrade linux-image-azureUpgrade linux-image-nvidia-lowlatency-64k-6.8Upgrade linux-image-nvidia-lowlatencyUpgrade linux-image-nvidia-tegra-rtUpgrade linux-image-6.8.0-1058-gcpUpgrade linux-image-6.8.1-1051-realtimeUpgrade linux-image-lowlatency-64kUpgrade linux-image-6.8.0-1054-nvidiaUpgrade linux-image-lowlatencyUpgrade linux-image-aws-6.8Upgrade linux-image-6.17.0-1031-nvidia-64kUpgrade linux-image-aws-fipsUpgrade linux-image-raspiUpgrade linux-image-xilinx-6.8Upgrade linux-image-6.8.0-1058-gcp-64kUpgrade linux-image-oracle-6.17Upgrade linux-image-gcp-64kUpgrade linux-image-oracleUpgrade linux-image-azure-fdeUpgrade linux-image-realtime-6.8.1Upgrade linux-image-oem-24.04bUpgrade linux-image-6.8.0-1032-xilinxUpgrade linux-image-nvidia-hwe-24.04Upgrade linux-image-6.8.0-1055-ibmUpgrade linux-image-6.8.0-116-fipsUpgrade linux-image-nvidiaUpgrade linux-image-6.8.0-117-genericUpgrade linux-image-gcp-fipsUpgrade linux-image-6.8.0-2045-raspi-realtimeUpgrade linux-image-nvidia-64k-6.8Upgrade linux-image-6.8.0-117-lowlatencyUpgrade linux-image-oracle-64k-6.17Upgrade linux-image-nvidia-tegra-6.8Upgrade linux-image-6.8.0-1055-aws-64kUpgrade linux-image-6.17.0-1019-oracleUpgrade linux-image-raspi-realtime-6.8Upgrade linux-image-aws-64k-lts-24.04Upgrade linux-image-gcp-6.8Upgrade linux-image-6.8.0-1055-aws-fipsUpgrade linux-image-gcp-64k-6.8Upgrade linux-image-nvidia-6.8Upgrade linux-image-gcp-64k-lts-24.04Upgrade linux-image-xilinx-zynqmpUpgrade linux-image-generic-lpaeUpgrade linux-image-6.8.0-1056-azureUpgrade linux-image-genericUpgrade linux-image-fipsUpgrade linux-image-6.8.0-1054-gkeUpgrade linux-image-aws-fips-6.8Upgrade linux-image-virtualUpgrade linux-image-gcp-fips-6.8Upgrade linux-image-6.8.0-1054-nvidia-64kUpgrade linux-image-6.8.0-1041-gkeopUpgrade linux-image-xilinxUpgrade linux-image-nvidia-64k-hwe-24.04Upgrade linux-image-oem-24.04cUpgrade linux-image-oracle-64kUpgrade linux-image-ibm-lts-24.04Upgrade linux-image-aws-lts-24.04Upgrade linux-image-6.8.0-1059-azure-fipsUpgrade linux-image-6.8.0-1056-raspiUpgrade linux-image-6.8.0-1054-nvidia-lowlatencyUpgrade linux-image-gkeUpgrade linux-image-ibm-classicUpgrade linux-image-6.17.0-1030-oemUpgrade linux-image-gcpUpgrade linux-image-6.17.0-1018-azure-fdeUpgrade linux-image-oem-24.04Upgrade linux-image-lowlatency-64k-6.8Upgrade linux-image-intel-iot-realtimeUpgrade linux-image-ibm-6.8Upgrade linux-image-6.17.0-1021-gcpUpgrade linux-image-6.17.0-1019-oracle-64kUpgrade linux-image-realtime-6.17Upgrade linux-image-realtimeUpgrade linux-image-nvidia-tegra-rt-6.8Upgrade linux-image-nvidia-tegraUpgrade linux-image-gcp-lts-24.04Upgrade linux-image-6.8.0-1054-nvidia-lowlatency-64kUpgrade linux-image-6.8.0-1055-awsUpgrade linux-image-azure-fipsUpgrade linux-image-generic-64kUpgrade linux-image-gcp-6.17Upgrade linux-image-azure-6.17Upgrade linux-image-azure-6.8Upgrade linux-image-azure-fips-6.8Upgrade linux-image-6.8.0-1024-nvidia-tegraUpgrade linux-image-6.8.0-1024-nvidia-tegra-rtUpgrade linux-image-6.17.0-1021-azureUpgrade linux-image-lowlatency-64k-hwe-22.04Upgrade linux-image-realtime-hwe-22.04Upgrade linux-image-oem-6.17Upgrade linux-image-oem-24.04aUpgrade linux-image-kvmUpgrade linux-image-gkeop-6.8Upgrade linux-image-gkeopUpgrade linux-image-generic-6.8Upgrade linux-image-fips-6.8Upgrade linux-image-6.8.0-1059-azureUpgrade linux-image-6.8.0-1054-gke-64kUpgrade linux-image-6.17.0-1031-nvidiaUpgrade linux-image-nvidia-64kUpgrade linux-image-intel-iotgUpgrade linux-image-6.17.0-1018-realtimeUpgrade linux-image-azure-lts-24.04Upgrade linux-image-aws-64k-6.8Upgrade linux-image-6.8.0-117-lowlatency-64kUpgrade linux-image-raspi-realtimeUpgrade linux-image-realtime-hwe-24.04Upgrade linux-image-oem-24.04dUpgrade linux-image-nvidia-64k-6.17Upgrade linux-image-ibmUpgrade linux-image-gke-64k-6.8Upgrade linux-image-gke-6.8 | May 25, 2026 | May 19, 2026 |
| Vmware Photon_os | — | Use 'tdnf update' to upgrade all packages to the latest version. | May 27, 2026 | Jan 25, 2026 |
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