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 kernel-debuginfo-common-aarch64Upgrade kernel6.12-debuginfo-common-aarch64Upgrade kernel-headersUpgrade kernel6.12-toolsUpgrade perfUpgrade kernel-develUpgrade kernel-tools-develUpgrade bpftool6.12Upgrade kernel6.12-debuginfoUpgrade kernel6.12-libbpf-develUpgrade perf6.12-debuginfoUpgrade python3-perf6.12Upgrade kernel6.12-tools-develUpgrade kernel6.12-tools-debuginfoUpgrade python3-perf6.12-debuginfoUpgrade kernel6.12-libbpf-staticUpgrade kernel6.12-modules-extraUpgrade perf-debuginfoUpgrade kernel6.12-libbpfUpgrade kernel-modules-extra-commonUpgrade python3-perfUpgrade bpftool6.12-debuginfoUpgrade kernel-livepatch-6.12.68-92.122Upgrade kernel6.12-modules-extra-commonUpgrade kernelUpgrade kernel6.12-debuginfo-common-x86_64Upgrade kernel-toolsUpgrade kernel-debuginfoUpgrade python3-perf-debuginfoUpgrade perf6.12Upgrade kernel6.12-libbpf-debuginfoUpgrade kernel-livepatch-6.1.163-186.299Upgrade kernel6.12Upgrade kernel-debuginfo-common-x86_64Upgrade kernel-libbpf-debuginfoUpgrade kernel6.12-headersUpgrade kernel-modules-extraUpgrade bpftool-debuginfoUpgrade bpftoolUpgrade kernel6.12-develUpgrade kernel-tools-debuginfoUpgrade kernel-libbpf-staticUpgrade kernel-libbpf-develUpgrade kernel-libbpf | Mar 9, 2026 | Jan 25, 2026 |
| Debian | — | Upgrade linux-6.1Upgrade linux | 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-rtUpgrade dtb-appleUpgrade dtb-marvellUpgrade kernel-default-extraUpgrade kernel-syms-azureUpgrade kselftests-kmp-defaultUpgrade kernel-azure-vdsoUpgrade ocfs2-kmp-64kbUpgrade kernel-64kbUpgrade kernel-kvmsmall-develUpgrade kernel-obs-qaUpgrade kernel-defaultUpgrade kernel-azureUpgrade kernel-macrosUpgrade dtb-nvidiaUpgrade dlm-kmp-defaultUpgrade dtb-socionextUpgrade kselftests-kmp-azureUpgrade dtb-freescaleUpgrade dtb-amlogicUpgrade kernel-rtUpgrade dtb-broadcomUpgrade kernel-rt-extraUpgrade kernel-kvmsmallUpgrade kernel-azure-develUpgrade kernel-azure-extraUpgrade dlm-kmp-azureUpgrade kernel-rt-optionalUpgrade kernel-default-livepatchUpgrade kselftests-kmp-rtUpgrade cluster-md-kmp-azureUpgrade kernel-devel-azureUpgrade dtb-apmUpgrade kernel-zfcpdumpUpgrade cluster-md-kmp-defaultUpgrade kernel-default-develUpgrade gfs2-kmp-rtUpgrade kernel-docsUpgrade kernel-kvmsmall-vdsoUpgrade kernel-obs-buildUpgrade kernel-rt-vdsoUpgrade dtb-amazonUpgrade kernel-docs-htmlUpgrade kernel-default-baseUpgrade gfs2-kmp-64kbUpgrade kernel-symsUpgrade dtb-caviumUpgrade ocfs2-kmp-defaultUpgrade gfs2-kmp-azureUpgrade kernel-default-vdsoUpgrade kernel-azure-optionalUpgrade dtb-xilinxUpgrade dtb-qcomUpgrade kselftests-kmp-64kbUpgrade kernel-default-optionalUpgrade dtb-lgUpgrade dlm-kmp-64kbUpgrade reiserfs-kmp-defaultUpgrade kernel-64kb-extraUpgrade gfs2-kmp-defaultUpgrade dtb-amdUpgrade dlm-kmp-rtUpgrade kernel-source-vanillaUpgrade kernel-sourceUpgrade dtb-rockchipUpgrade dtb-sprdUpgrade kernel-source-azureUpgrade kernel-rt-develUpgrade dtb-mediatekUpgrade dtb-alteraUpgrade cluster-md-kmp-rtUpgrade kernel-64kb-develUpgrade kernel-64kb-optionalUpgrade dtb-hisiliconUpgrade cluster-md-kmp-64kbUpgrade dtb-exynosUpgrade ocfs2-kmp-azureUpgrade kernel-develUpgrade dtb-renesasUpgrade dtb-armUpgrade dtb-allwinner | Feb 12, 2026 | Feb 12, 2026 |
| Ubuntu | — | Upgrade linux-image-realtime-hwe-22.04Upgrade linux-image-generic-6.8Upgrade linux-image-6.8.0-1054-gkeUpgrade linux-image-virtualUpgrade linux-image-6.8.0-1054-nvidia-lowlatency-64kUpgrade linux-image-oem-24.04cUpgrade linux-image-aws-lts-24.04Upgrade linux-image-gkeop-6.8Upgrade linux-image-raspi-realtimeUpgrade linux-image-realtime-hwe-24.04Upgrade linux-image-oem-24.04dUpgrade linux-image-xilinxUpgrade linux-image-nvidia-64k-6.17Upgrade linux-image-6.8.0-1041-gkeopUpgrade linux-image-gkeopUpgrade linux-image-gcp-6.17Upgrade linux-image-6.8.0-1054-nvidia-64kUpgrade linux-image-azure-6.8Upgrade linux-image-gke-6.8Upgrade linux-image-azure-6.17Upgrade linux-image-6.8.0-1024-nvidia-tegraUpgrade linux-image-6.8.0-1024-nvidia-tegra-rtUpgrade linux-image-gke-64k-6.8Upgrade linux-image-generic-64kUpgrade linux-image-6.17.0-1021-azureUpgrade linux-image-ibm-6.8Upgrade linux-image-lowlatency-64k-hwe-22.04Upgrade linux-image-azure-fips-6.8Upgrade linux-image-ibmUpgrade linux-image-oem-24.04aUpgrade linux-image-gcp-lts-24.04Upgrade linux-image-gcpUpgrade linux-image-nvidia-tegraUpgrade linux-image-oem-24.04Upgrade linux-image-nvidia-tegra-rt-6.8Upgrade linux-image-realtimeUpgrade linux-image-realtime-6.17Upgrade linux-image-6.17.0-1018-azure-fdeUpgrade linux-image-6.17.0-1019-oracle-64kUpgrade linux-image-aws-fips-6.8Upgrade linux-image-6.17.0-1021-gcpUpgrade linux-image-intel-iot-realtimeUpgrade linux-image-lowlatency-64k-6.8Upgrade linux-image-6.17.0-1030-oemUpgrade linux-image-6.8.0-1054-nvidia-lowlatencyUpgrade linux-image-oem-6.17Upgrade linux-image-6.17.0-1031-nvidiaUpgrade linux-image-fips-6.8Upgrade linux-image-gkeUpgrade linux-image-gcp-fips-6.8Upgrade linux-image-intel-iotgUpgrade linux-image-aws-64k-6.8Upgrade linux-image-nvidia-64kUpgrade linux-image-ibm-lts-24.04Upgrade linux-image-azure-lts-24.04Upgrade linux-image-6.17.0-1018-realtimeUpgrade linux-image-6.8.0-117-lowlatency-64kUpgrade linux-image-6.8.0-1059-azure-fipsUpgrade linux-image-nvidia-64k-hwe-24.04Upgrade linux-image-6.8.0-1056-raspiUpgrade linux-image-oracle-64kUpgrade linux-image-6.8.0-1055-awsUpgrade linux-image-azure-fipsUpgrade linux-image-ibm-classicUpgrade linux-image-kvmUpgrade linux-image-6.8.0-1054-gke-64kUpgrade linux-image-6.8.0-1059-azureUpgrade linux-image-lowlatency-64kUpgrade linux-image-lowlatencyUpgrade linux-image-nvidia-lowlatency-6.8Upgrade linux-image-6.8.0-1032-xilinxUpgrade linux-image-aws-6.8Upgrade linux-image-realtime-6.8.1Upgrade linux-image-nvidia-lowlatencyUpgrade linux-image-genericUpgrade linux-image-gcp-fipsUpgrade linux-image-6.8.0-1054-nvidiaUpgrade linux-image-oracle-6.17Upgrade linux-image-generic-lpaeUpgrade linux-image-6.17.0-1031-nvidia-64kUpgrade linux-image-xilinx-zynqmpUpgrade linux-image-oracle-64k-6.17Upgrade linux-image-raspi-realtime-6.8Upgrade linux-image-nvidiaUpgrade linux-image-6.8.0-116-fipsUpgrade linux-image-oem-24.04bUpgrade linux-image-nvidia-6.8Upgrade linux-image-fipsUpgrade linux-image-6.8.0-1055-aws-fipsUpgrade linux-image-nvidia-hwe-24.04Upgrade linux-image-6.8.0-117-generic-64kUpgrade linux-image-6.17.0-1021-gcp-64kUpgrade linux-image-virtual-6.8Upgrade linux-image-6.8.0-1058-gcp-fipsUpgrade linux-image-6.8.0-1056-azureUpgrade linux-image-nvidia-hwe-22.04Upgrade linux-image-6.8.0-2045-raspi-realtimeUpgrade linux-image-nvidia-lowlatency-64kUpgrade linux-image-6.8.0-1055-ibmUpgrade linux-image-nvidia-64k-6.8Upgrade linux-image-gcp-64kUpgrade linux-image-azure-fdeUpgrade linux-image-6.8.0-1058-gcp-64kUpgrade linux-image-6.8.0-1058-gcpUpgrade linux-image-nvidia-tegra-rtUpgrade linux-image-lowlatency-hwe-22.04Upgrade linux-image-azureUpgrade linux-image-aws-fipsUpgrade linux-image-nvidia-lowlatency-64k-6.8Upgrade linux-image-azure-fde-6.17Upgrade linux-image-6.8.1-1051-realtimeUpgrade linux-image-raspiUpgrade linux-image-oracleUpgrade linux-image-xilinx-6.8Upgrade linux-image-6.8.0-117-genericUpgrade linux-image-gcp-64k-lts-24.04Upgrade linux-image-6.17.0-1019-oracleUpgrade linux-image-nvidia-tegra-6.8Upgrade linux-image-gcp-64k-6.8Upgrade linux-image-gcp-6.8Upgrade linux-image-aws-64k-lts-24.04Upgrade linux-image-6.8.0-1055-aws-64kUpgrade linux-image-generic-64k-6.8Upgrade linux-image-raspi-6.8Upgrade linux-image-nvidia-64k-hwe-22.04Upgrade linux-image-gcp-64k-6.17Upgrade linux-image-6.8.0-117-lowlatencyUpgrade linux-image-nvidia-6.17Upgrade linux-image-lowlatency-6.8Upgrade linux-image-gke-64k | 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