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