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-libbpfUpgrade kernel-tools-debuginfoUpgrade perf6.12-debuginfoUpgrade kernel-develUpgrade python3-perf6.12Upgrade kernel-libbpf-debuginfoUpgrade kernel6.12-debuginfo-common-x86_64Upgrade kernel6.12Upgrade bpftoolUpgrade kernel-livepatch-6.12.35-55.103Upgrade kernel-tools-develUpgrade kernel-modules-extra-commonUpgrade kernel-toolsUpgrade kernel-libbpf-develUpgrade kernel6.12-modules-extraUpgrade bpftool-debuginfoUpgrade python3-perf6.12-debuginfoUpgrade kernel6.12-debuginfoUpgrade kernel-headersUpgrade kernel-libbpf-staticUpgrade perf6.12Upgrade kernel6.12-debuginfo-common-aarch64 | Aug 5, 2025 | Jul 3, 2025 |
| Debian | — | Upgrade linux-6.1Upgrade linux | Jul 4, 2025 | Jul 4, 2025 |
| Redhat_linux | — | No solution exists | Jul 9, 2025 | Jul 3, 2025 |
| Suse | — | Upgrade dtb-marvellUpgrade kernel-64kbUpgrade dtb-xilinxUpgrade dtb-apmUpgrade dtb-mediatekUpgrade dtb-appleUpgrade kernel-default-livepatchUpgrade kernel-docs-htmlUpgrade dtb-hisiliconUpgrade kernel-64kb-develUpgrade kernel-default-livepatch-develUpgrade dtb-amdUpgrade kernel-default-optionalUpgrade kernel-symsUpgrade kernel-rt-develUpgrade kernel-macrosUpgrade kernel-sourceUpgrade gfs2-kmp-rtUpgrade kernel-zfcpdumpUpgrade ocfs2-kmp-64kbUpgrade kernel-64kb-optionalUpgrade dtb-amazonUpgrade dtb-freescaleUpgrade dtb-exynosUpgrade cluster-md-kmp-rtUpgrade dtb-renesasUpgrade kernel-develUpgrade dtb-broadcomUpgrade kernel-default-develUpgrade dlm-kmp-64kbUpgrade kernel-kvmsmallUpgrade kernel-kvmsmall-develUpgrade ocfs2-kmp-rtUpgrade dtb-lgUpgrade cluster-md-kmp-defaultUpgrade kernel-obs-qaUpgrade kernel-rt-livepatchUpgrade dtb-socionextUpgrade dtb-amlogicUpgrade kernel-default-extraUpgrade gfs2-kmp-64kbUpgrade kselftests-kmp-64kbUpgrade cluster-md-kmp-64kbUpgrade dtb-sprdUpgrade kernel-obs-buildUpgrade kernel-rtUpgrade kernel-defaultUpgrade dtb-armUpgrade dtb-caviumUpgrade dlm-kmp-rtUpgrade ocfs2-kmp-defaultUpgrade dtb-rockchipUpgrade dtb-nvidiaUpgrade dtb-alteraUpgrade kernel-rt-livepatch-develUpgrade kernel-rt-extraUpgrade kselftests-kmp-defaultUpgrade kernel-rt-vdsoUpgrade gfs2-kmp-defaultUpgrade kernel-docsUpgrade kernel-64kb-extraUpgrade kselftests-kmp-rtUpgrade kernel-rt-optionalUpgrade dtb-qcomUpgrade dtb-allwinnerUpgrade kernel-default-vdsoUpgrade kernel-kvmsmall-vdsoUpgrade dlm-kmp-defaultUpgrade kernel-source-vanilla | Dec 5, 2025 | Nov 6, 2025 |
| Ubuntu | — | Upgrade linux-image-oem-24.04cUpgrade linux-image-oem-24.04aUpgrade linux-image-6.8.0-1046-aws-fipsUpgrade linux-image-nvidia-lowlatency-64k-6.8Upgrade linux-image-6.8.0-1046-azure-fipsUpgrade linux-image-generic-64k-6.14Upgrade linux-image-gkeUpgrade linux-image-nvidia-64k-6.8Upgrade linux-image-6.8.0-1047-gcpUpgrade linux-image-6.14.0-1012-realtimeUpgrade linux-image-6.8.0-1046-nvidiaUpgrade linux-image-lowlatency-hwe-22.04Upgrade linux-image-gcp-64k-lts-24.04Upgrade linux-image-oem-24.04Upgrade linux-image-6.8.0-2037-raspi-realtimeUpgrade linux-image-generic-6.8Upgrade linux-image-azure-fips-6.8Upgrade linux-image-realtimeUpgrade linux-image-6.14.0-1014-raspiUpgrade linux-image-oracle-64kUpgrade linux-image-oem-6.14Upgrade linux-image-aws-fips-6.8Upgrade linux-image-kvmUpgrade linux-image-6.8.0-1046-nvidia-64kUpgrade linux-image-raspi-realtimeUpgrade linux-image-gcp-6.8Upgrade linux-image-6.14.0-1016-gcpUpgrade linux-image-oracleUpgrade linux-image-gcp-lts-24.04Upgrade linux-image-gcpUpgrade linux-image-nvidia-64k-hwe-22.04Upgrade linux-image-azure-6.14Upgrade linux-image-nvidia-hwe-22.04Upgrade linux-image-lowlatency-64k-6.8Upgrade linux-image-awsUpgrade linux-image-aws-64kUpgrade linux-image-realtime-hwe-22.04Upgrade linux-image-intel-iotgUpgrade linux-image-6.8.0-1030-gkeopUpgrade linux-image-gcp-64k-6.8Upgrade linux-image-azure-6.8Upgrade linux-image-virtual-hwe-24.04Upgrade linux-image-fipsUpgrade linux-image-intel-iot-realtimeUpgrade linux-image-6.8.0-100-generic-64kUpgrade linux-image-6.8.0-100-lowlatency-64kUpgrade linux-image-generic-64k-hwe-24.04Upgrade linux-image-virtualUpgrade linux-image-oem-22.04bUpgrade linux-image-6.8.0-100-fipsUpgrade linux-image-generic-lpaeUpgrade linux-image-nvidia-lowlatency-64kUpgrade linux-image-xilinxUpgrade linux-image-6.8.0-1046-aws-64kUpgrade linux-image-6.14.0-32-genericUpgrade linux-image-fips-6.8Upgrade linux-image-xilinx-zynqmpUpgrade linux-image-generic-64k-hwe-22.04Upgrade linux-image-lowlatency-64k-hwe-22.04Upgrade linux-image-oem-24.04bUpgrade linux-image-generic-hwe-22.04Upgrade linux-image-generic-hwe-24.04Upgrade linux-image-6.14.0-32-generic-64kUpgrade linux-image-virtual-6.14Upgrade linux-image-6.8.1-1041-realtimeUpgrade linux-image-oem-22.04dUpgrade linux-image-ibm-classicUpgrade linux-image-6.8.0-1046-awsUpgrade linux-image-6.8.0-1046-azureUpgrade linux-image-6.8.0-1046-nvidia-lowlatencyUpgrade linux-image-6.8.0-1043-gkeUpgrade linux-image-aws-lts-24.04Upgrade linux-image-nvidia-64kUpgrade linux-image-6.8.0-1046-nvidia-lowlatency-64kUpgrade linux-image-gke-6.8Upgrade linux-image-aws-64k-6.8Upgrade linux-image-gkeop-6.8Upgrade linux-image-oracle-64k-6.14Upgrade linux-image-genericUpgrade linux-image-gcp-fipsUpgrade linux-image-gcp-64kUpgrade linux-image-generic-64k-6.8Upgrade linux-image-6.8.0-1044-ibmUpgrade linux-image-6.8.0-1047-gcp-64kUpgrade linux-image-6.14.0-1012-oemUpgrade linux-image-virtual-6.8Upgrade linux-image-oracle-6.8Upgrade linux-image-nvidiaUpgrade linux-image-6.14.0-1012-azureUpgrade linux-image-raspi-6.8Upgrade linux-image-aws-64k-lts-24.04Upgrade linux-image-nvidia-6.8Upgrade linux-image-6.8.0-1043-gke-64kUpgrade linux-image-lowlatency-6.8Upgrade linux-image-xilinx-6.8Upgrade linux-image-ibm-6.8Upgrade linux-image-gcp-64k-6.14Upgrade linux-image-6.8.0-1023-xilinxUpgrade linux-image-6.14.0-1016-gcp-64kUpgrade linux-image-aws-6.8Upgrade linux-image-6.8.0-1051-azureUpgrade linux-image-oracle-64k-lts-24.04Upgrade linux-image-oem-22.04cUpgrade linux-image-generic-6.14Upgrade linux-image-aws-64k-6.14Upgrade linux-image-nvidia-lowlatency-6.8Upgrade linux-image-lowlatency-64kUpgrade linux-image-gke-64kUpgrade linux-image-generic-64kUpgrade linux-image-gcp-6.14Upgrade linux-image-azureUpgrade linux-image-aws-6.14Upgrade linux-image-realtime-hwe-24.04Upgrade linux-image-raspi-realtime-6.8Upgrade linux-image-6.14.0-1013-oracleUpgrade linux-image-oracle-6.14Upgrade linux-image-ibm-lts-24.04Upgrade linux-image-gke-64k-6.8Upgrade linux-image-6.8.0-1043-oracle-64kUpgrade linux-image-6.8.0-1047-gcp-fipsUpgrade linux-image-6.8.0-1043-oracleUpgrade linux-image-6.14.0-1013-oracle-64kUpgrade linux-image-oem-22.04aUpgrade linux-image-realtime-6.8.1Upgrade linux-image-raspi-6.14Upgrade linux-image-gkeopUpgrade linux-image-gcp-fips-6.8Upgrade linux-image-oracle-64k-6.8Upgrade linux-image-oem-22.04Upgrade linux-image-ibmUpgrade linux-image-6.8.0-100-lowlatencyUpgrade linux-image-6.14.0-1013-awsUpgrade linux-image-raspiUpgrade linux-image-virtual-hwe-22.04Upgrade linux-image-lowlatencyUpgrade linux-image-6.8.0-100-genericUpgrade linux-image-azure-fipsUpgrade linux-image-azure-lts-24.04Upgrade linux-image-aws-fipsUpgrade linux-image-6.14.0-1013-aws-64kUpgrade linux-image-realtime-6.14Upgrade linux-image-oracle-lts-24.04Upgrade linux-image-nvidia-lowlatencyUpgrade linux-image-6.8.0-1047-raspi | 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