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