In the Linux kernel, the following vulnerability has been resolved:
arm64/fpsimd: Discard stale CPU state when handling SME traps
The logic for handling SME traps manipulates saved FPSIMD/SVE/SME state incorrectly, and a race with preemption can result in a task having TIF_SME set and TIF_FOREIGN_FPSTATE clear even though the live CPU state is stale (e.g. with SME traps enabled). This can result in warnings from do_sme_acc() where SME traps are not expected while TIF_SME is set:
| /* With TIF_SME userspace shouldn't generate any traps */ | if (test_and_set_thread_flag(TIF_SME)) | WARN_ON(1);
This is very similar to the SVE issue we fixed in commit:
751ecf6afd6568ad ("arm64/sve: Discard stale CPU state when handling SVE traps")
The race can occur when the SME trap handler is preempted before and after manipulating the saved FPSIMD/SVE/SME state, starting and ending on the same CPU, e.g.
| void do_sme_acc(unsigned long esr, struct pt_regs *regs) | { | // Trap on CPU 0 with TIF_SME clear, SME traps enabled | // task->fpsimd_cpu is 0. | // per_cpu_ptr(&fpsimd_last_state, 0) is task. | | ... | | // Preempted; migrated from CPU 0 to CPU 1. | // TIF_FOREIGN_FPSTATE is set. | | get_cpu_fpsimd_context(); | | /* With TIF_SME userspace shouldn't generate any traps */ | if (test_and_set_thread_flag(TIF_SME)) | WARN_ON(1); | | if (!test_thread_flag(TIF_FOREIGN_FPSTATE)) { | unsigned long vq_minus_one = | sve_vq_from_vl(task_get_sme_vl(current)) - 1; | sme_set_vq(vq_minus_one); | | fpsimd_bind_task_to_cpu(); | } | | put_cpu_fpsimd_context(); | | // Preempted; migrated from CPU 1 to CPU 0. | // task->fpsimd_cpu is still 0 | // If per_cpu_ptr(&fpsimd_last_state, 0) is still task then: | // - Stale HW state is reused (with SME traps enabled) | // - TIF_FOREIGN_FPSTATE is cleared | // - A return to userspace skips HW state restore | }
Fix the case where the state is not live and TIF_FOREIGN_FPSTATE is set by calling fpsimd_flush_task_state() to detach from the saved CPU state. This ensures that a subsequent context switch will not reuse the stale CPU state, and will instead set TIF_FOREIGN_FPSTATE, forcing the new state to be reloaded from memory prior to a return to userspace.
Note: this was originallly posted as [1].
[ Rutland: rewrite commit message ]
CVSS Details
- CVSS 3.1 Base Score: 5.5
- CVSS 3.1 Vector: (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H)
Covered by Rapid7
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Amazon_linux_2023 | — | Upgrade kernel-livepatch-6.12.35-55.103Upgrade bpftoolUpgrade kernel-libbpfUpgrade kernel-tools-develUpgrade kernel-libbpf-debuginfoUpgrade kernel6.12-debuginfo-common-x86_64Upgrade perf6.12-debuginfoUpgrade kernel-tools-debuginfoUpgrade kernel-develUpgrade python3-perf6.12Upgrade kernel6.12Upgrade kernel-headersUpgrade perf6.12Upgrade kernel6.12-debuginfoUpgrade kernel-libbpf-staticUpgrade kernel6.12-modules-extraUpgrade kernel-toolsUpgrade kernel-libbpf-develUpgrade python3-perf6.12-debuginfoUpgrade bpftool-debuginfoUpgrade kernel6.12-debuginfo-common-aarch64Upgrade kernel-modules-extra-common | Aug 5, 2025 | Jul 3, 2025 |
| Debian | — | Upgrade linuxUpgrade linux-6.1 | Jul 4, 2025 | Jul 4, 2025 |
| Redhat_linux | — | No solution exists | Jul 9, 2025 | Jul 3, 2025 |
| Suse | — | Upgrade dtb-lgUpgrade kernel-zfcpdumpUpgrade kernel-default-livepatch-develUpgrade dtb-socionextUpgrade dtb-mediatekUpgrade dtb-apmUpgrade dtb-appleUpgrade kernel-default-livepatchUpgrade dtb-hisiliconUpgrade ocfs2-kmp-64kbUpgrade kernel-docs-htmlUpgrade dtb-amdUpgrade dtb-amazonUpgrade kernel-kvmsmall-develUpgrade ocfs2-kmp-rtUpgrade kernel-kvmsmallUpgrade kernel-rt-livepatchUpgrade dtb-xilinxUpgrade kernel-sourceUpgrade dtb-freescaleUpgrade kernel-64kbUpgrade dtb-exynosUpgrade kernel-64kb-optionalUpgrade kernel-symsUpgrade cluster-md-kmp-rtUpgrade dtb-amlogicUpgrade dtb-marvellUpgrade kernel-obs-qaUpgrade kernel-default-extraUpgrade kernel-rt-vdsoUpgrade kernel-docsUpgrade kernel-default-vdsoUpgrade kernel-kvmsmall-vdsoUpgrade kernel-rtUpgrade dtb-sprdUpgrade gfs2-kmp-defaultUpgrade cluster-md-kmp-64kbUpgrade kselftests-kmp-rtUpgrade kernel-rt-livepatch-develUpgrade kernel-rt-extraUpgrade dtb-alteraUpgrade dtb-nvidiaUpgrade dlm-kmp-defaultUpgrade kernel-source-vanillaUpgrade kernel-defaultUpgrade dtb-rockchipUpgrade dtb-qcomUpgrade dtb-caviumUpgrade dtb-armUpgrade dtb-allwinnerUpgrade kernel-obs-buildUpgrade kernel-64kb-extraUpgrade ocfs2-kmp-defaultUpgrade kernel-rt-optionalUpgrade dlm-kmp-rtUpgrade kselftests-kmp-defaultUpgrade cluster-md-kmp-defaultUpgrade dtb-broadcomUpgrade kernel-develUpgrade kernel-rt-develUpgrade dlm-kmp-64kbUpgrade dtb-renesasUpgrade gfs2-kmp-64kbUpgrade gfs2-kmp-rtUpgrade kernel-default-develUpgrade kselftests-kmp-64kbUpgrade kernel-default-optionalUpgrade kernel-macrosUpgrade kernel-64kb-devel | Dec 5, 2025 | Nov 6, 2025 |
| Ubuntu | — | Upgrade linux-image-aws-lts-24.04Upgrade linux-image-generic-64kUpgrade linux-image-raspi-6.8Upgrade linux-image-oracle-6.14Upgrade linux-image-6.8.0-1046-awsUpgrade linux-image-6.8.0-1047-raspiUpgrade linux-image-aws-fipsUpgrade linux-image-6.14.0-1013-aws-64kUpgrade linux-image-gke-64k-6.8Upgrade linux-image-6.14.0-1013-oracleUpgrade linux-image-generic-64k-6.8Upgrade linux-image-gkeop-6.8Upgrade linux-image-gcp-64kUpgrade linux-image-genericUpgrade linux-image-6.8.0-1046-nvidia-lowlatencyUpgrade linux-image-6.8.0-1047-gcp-64kUpgrade linux-image-6.8.1-1041-realtimeUpgrade linux-image-oracle-lts-24.04Upgrade linux-image-gcp-fipsUpgrade linux-image-nvidia-6.8Upgrade linux-image-lowlatency-6.8Upgrade linux-image-oracle-64k-6.14Upgrade linux-image-realtime-6.14Upgrade linux-image-virtual-6.14Upgrade linux-image-6.8.0-1043-oracle-64kUpgrade linux-image-ibm-lts-24.04Upgrade linux-image-6.8.0-100-lowlatencyUpgrade linux-image-virtual-hwe-22.04Upgrade linux-image-aws-64k-6.8Upgrade linux-image-6.14.0-1013-awsUpgrade linux-image-lowlatencyUpgrade linux-image-nvidia-lowlatencyUpgrade linux-image-gke-6.8Upgrade linux-image-azure-fipsUpgrade linux-image-gcp-fips-6.8Upgrade linux-image-oem-22.04Upgrade linux-image-6.8.0-1043-oracleUpgrade linux-image-oem-22.04aUpgrade linux-image-raspi-6.14Upgrade linux-image-realtime-6.8.1Upgrade linux-image-raspiUpgrade linux-image-azure-lts-24.04Upgrade linux-image-oracle-6.8Upgrade linux-image-virtual-6.8Upgrade linux-image-6.8.0-1046-nvidia-lowlatency-64kUpgrade linux-image-nvidia-64kUpgrade linux-image-6.14.0-1012-azureUpgrade linux-image-6.14.0-1012-oemUpgrade linux-image-6.8.0-1043-gkeUpgrade linux-image-nvidiaUpgrade linux-image-6.14.0-1013-oracle-64kUpgrade linux-image-ibmUpgrade linux-image-6.8.0-1047-gcp-fipsUpgrade linux-image-gkeopUpgrade linux-image-aws-64k-lts-24.04Upgrade linux-image-oracle-64k-6.8Upgrade linux-image-6.8.0-1044-ibmUpgrade linux-image-6.8.0-100-genericUpgrade linux-image-xilinx-6.8Upgrade linux-image-ibm-6.8Upgrade linux-image-aws-6.8Upgrade linux-image-6.14.0-1016-gcp-64kUpgrade linux-image-oracle-64k-lts-24.04Upgrade linux-image-6.8.0-1051-azureUpgrade linux-image-oem-22.04cUpgrade linux-image-6.8.0-1023-xilinxUpgrade linux-image-nvidia-lowlatency-6.8Upgrade linux-image-lowlatency-64kUpgrade linux-image-raspi-realtime-6.8Upgrade linux-image-aws-64k-6.14Upgrade linux-image-gke-64kUpgrade linux-image-oem-22.04dUpgrade linux-image-gcp-64k-6.14Upgrade linux-image-6.14.0-32-generic-64kUpgrade linux-image-6.8.0-1043-gke-64kUpgrade linux-image-aws-6.14Upgrade linux-image-realtime-hwe-24.04Upgrade linux-image-azureUpgrade linux-image-6.8.0-1046-azureUpgrade linux-image-gcp-6.14Upgrade linux-image-generic-6.14Upgrade linux-image-ibm-classicUpgrade linux-image-6.8.0-2037-raspi-realtimeUpgrade linux-image-generic-hwe-24.04Upgrade linux-image-aws-64kUpgrade linux-image-oem-24.04bUpgrade linux-image-gcp-6.8Upgrade linux-image-lowlatency-hwe-22.04Upgrade linux-image-generic-hwe-22.04Upgrade linux-image-6.14.0-1016-gcpUpgrade linux-image-gcp-lts-24.04Upgrade linux-image-azure-fips-6.8Upgrade linux-image-6.8.0-1046-aws-fipsUpgrade linux-image-oem-24.04cUpgrade linux-image-6.8.0-1047-gcpUpgrade linux-image-6.8.0-1046-azure-fipsUpgrade linux-image-intel-iotgUpgrade linux-image-intel-iot-realtimeUpgrade linux-image-gcp-64k-6.8Upgrade linux-image-lowlatency-64k-6.8Upgrade linux-image-awsUpgrade linux-image-6.8.0-1030-gkeopUpgrade linux-image-6.14.0-1014-raspiUpgrade linux-image-virtual-hwe-24.04Upgrade linux-image-fipsUpgrade linux-image-azure-6.8Upgrade linux-image-6.8.0-100-generic-64kUpgrade linux-image-nvidia-64k-hwe-22.04Upgrade linux-image-nvidia-hwe-22.04Upgrade linux-image-azure-6.14Upgrade linux-image-generic-64k-hwe-24.04Upgrade linux-image-6.8.0-100-lowlatency-64kUpgrade linux-image-generic-lpaeUpgrade linux-image-nvidia-lowlatency-64kUpgrade linux-image-xilinxUpgrade linux-image-generic-6.8Upgrade linux-image-gcp-64k-lts-24.04Upgrade linux-image-6.8.0-1046-nvidiaUpgrade linux-image-6.14.0-1012-realtimeUpgrade linux-image-xilinx-zynqmpUpgrade linux-image-oem-6.14Upgrade linux-image-fips-6.8Upgrade linux-image-6.8.0-1046-aws-64kUpgrade linux-image-nvidia-lowlatency-64k-6.8Upgrade linux-image-nvidia-64k-6.8Upgrade linux-image-generic-64k-6.14Upgrade linux-image-gkeUpgrade linux-image-6.14.0-32-genericUpgrade linux-image-oem-24.04aUpgrade linux-image-aws-fips-6.8Upgrade linux-image-kvmUpgrade linux-image-realtimeUpgrade linux-image-oracleUpgrade linux-image-6.8.0-1046-nvidia-64kUpgrade linux-image-raspi-realtimeUpgrade linux-image-oem-24.04Upgrade linux-image-virtualUpgrade linux-image-6.8.0-100-fipsUpgrade linux-image-oem-22.04bUpgrade linux-image-realtime-hwe-22.04Upgrade linux-image-generic-64k-hwe-22.04Upgrade linux-image-gcpUpgrade linux-image-lowlatency-64k-hwe-22.04Upgrade linux-image-oracle-64k | Jul 7, 2025 | Jul 3, 2025 |
| Vmware Photon_os | — | Use 'tdnf update' to upgrade all packages to the latest version. | Oct 10, 2025 | Jul 3, 2025 |
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