In the Linux kernel, the following vulnerability has been resolved:
arm64/fpsimd: signal: Fix restoration of SVE context
When SME is supported, Restoring SVE signal context can go wrong in a few ways, including placing the task into an invalid state where the kernel may read from out-of-bounds memory (and may potentially take a fatal fault) and/or may kill the task with a SIGKILL.
(1) Restoring a context with SVE_SIG_FLAG_SM set can place the task into an invalid state where SVCR.SM is set (and sve_state is non-NULL) but TIF_SME is clear, consequently resuting in out-of-bounds memory reads and/or killing the task with SIGKILL.
This can only occur in unusual (but legitimate) cases where the SVE signal context has either been modified by userspace or was saved in the context of another task (e.g. as with CRIU), as otherwise the presence of an SVE signal context with SVE_SIG_FLAG_SM implies that TIF_SME is already set.
While in this state, task_fpsimd_load() will NOT configure SMCR_ELx (leaving some arbitrary value configured in hardware) before restoring SVCR and attempting to restore the streaming mode SVE registers from memory via sve_load_state(). As the value of SMCR_ELx.LEN may be larger than the task's streaming SVE vector length, this may read memory outside of the task's allocated sve_state, reading unrelated data and/or triggering a fault.
While this can result in secrets being loaded into streaming SVE registers, these values are never exposed. As TIF_SME is clear, fpsimd_bind_task_to_cpu() will configure CPACR_ELx.SMEN to trap EL0 accesses to streaming mode SVE registers, so these cannot be accessed directly at EL0. As fpsimd_save_user_state() verifies the live vector length before saving (S)SVE state to memory, no secret values can be saved back to memory (and hence cannot be observed via ptrace, signals, etc).
When the live vector length doesn't match the expected vector length for the task, fpsimd_save_user_state() will send a fatal SIGKILL signal to the task. Hence the task may be killed after executing userspace for some period of time.
(2) Restoring a context with SVE_SIG_FLAG_SM clear does not clear the task's SVCR.SM. If SVCR.SM was set prior to restoring the context, then the task will be left in streaming mode unexpectedly, and some register state will be combined inconsistently, though the task will be left in legitimate state from the kernel's PoV.
This can only occur in unusual (but legitimate) cases where ptrace has been used to set SVCR.SM after entry to the sigreturn syscall, as syscall entry clears SVCR.SM.
In these cases, the the provided SVE register data will be loaded into the task's sve_state using the non-streaming SVE vector length and the FPSIMD registers will be merged into this using the streaming SVE vector length.
Fix (1) by setting TIF_SME when setting SVCR.SM. This also requires ensuring that the task's sme_state has been allocated, but as this could contain live ZA state, it should not be zeroed. Fix (2) by clearing SVCR.SM when restoring a SVE signal context with SVE_SIG_FLAG_SM clear.
For consistency, I've pulled the manipulation of SVCR, TIF_SVE, TIF_SME, and fp_type earlier, immediately after the allocation of sve_state/sme_state, before the restore of the actual register state. This makes it easier to ensure that these are always modified consistently, even if a fault is taken while reading the register data from the signal context. I do not expect any software to depend on the exact state restored when a fault is taken while reading the context.
CVSS Details
- CVSS 3.1 Base Score: 7.1
- CVSS 3.1 Vector: (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H)
Covered by Rapid7
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Amazon_linux_2023 | — | Upgrade kernel6.12-libbpfUpgrade perf6.12Upgrade python3-perf6.12-debuginfoUpgrade kernel-tools-develUpgrade kernel6.12-libbpf-staticUpgrade kernel-modules-extra-commonUpgrade kernel-libbpf-staticUpgrade bpftoolUpgrade python3-perfUpgrade kernel-debuginfo-common-aarch64Upgrade kernel-libbpf-develUpgrade kernel-livepatch-6.1.163-186.299Upgrade kernel6.12-tools-debuginfoUpgrade python3-perf-debuginfoUpgrade kernel-debuginfo-common-x86_64Upgrade kernel-toolsUpgrade kernel6.12-debuginfoUpgrade kernel6.12-libbpf-develUpgrade kernelUpgrade python3-perf6.12Upgrade kernel-headersUpgrade kernel-libbpf-debuginfoUpgrade kernel-debuginfoUpgrade kernel6.12-debuginfo-common-x86_64Upgrade kernel6.12-debuginfo-common-aarch64Upgrade kernel6.12-modules-extra-commonUpgrade kernel6.12-headersUpgrade kernel6.12Upgrade kernel-develUpgrade perfUpgrade kernel6.12-tools-develUpgrade kernel6.12-libbpf-debuginfoUpgrade kernel-livepatch-6.12.80-105.147Upgrade kernel6.12-develUpgrade perf6.12-debuginfoUpgrade bpftool6.12-debuginfoUpgrade bpftool-debuginfoUpgrade kernel-tools-debuginfoUpgrade bpftool6.12Upgrade kernel6.12-toolsUpgrade kernel-modules-extraUpgrade perf-debuginfoUpgrade kernel6.12-modules-extraUpgrade kernel-libbpf | Mar 27, 2026 | Feb 4, 2026 |
| Debian | — | Upgrade linux-6.1Upgrade linux | Feb 11, 2026 | Feb 11, 2026 |
| Redhat_linux | — | No solution exists | Jul 17, 2026 | Feb 4, 2026 |
| Ubuntu | — | Upgrade linux-image-fipsUpgrade linux-image-generic-lpaeUpgrade linux-image-nvidia-64k-6.8Upgrade linux-image-oem-6.17Upgrade linux-image-azure-6.8Upgrade linux-image-gcpUpgrade linux-image-lowlatency-64kUpgrade linux-image-6.17.0-1018-realtimeUpgrade linux-image-intel-iot-realtimeUpgrade linux-image-lowlatency-hwe-22.04Upgrade linux-image-6.8.0-2045-raspi-realtimeUpgrade linux-image-oem-24.04Upgrade linux-image-virtualUpgrade linux-image-6.8.0-117-genericUpgrade linux-image-6.17.0-1019-oracle-64kUpgrade linux-image-nvidia-tegra-rt-6.8Upgrade linux-image-intel-iotgUpgrade linux-image-generic-6.8Upgrade linux-image-nvidia-hwe-22.04Upgrade linux-image-ibmUpgrade linux-image-lowlatencyUpgrade linux-image-azure-lts-24.04Upgrade linux-image-lowlatency-64k-6.8Upgrade linux-image-nvidia-tegra-rtUpgrade linux-image-ibm-lts-24.04Upgrade linux-image-azure-fde-6.17Upgrade linux-image-azure-fips-6.8Upgrade linux-image-6.8.0-116-fipsUpgrade linux-image-ibm-classicUpgrade linux-image-oem-24.04bUpgrade linux-image-realtime-hwe-22.04Upgrade linux-image-6.17.0-1018-azure-fdeUpgrade linux-image-ibm-6.8Upgrade linux-image-6.17.0-1019-oracleUpgrade linux-image-oem-24.04dUpgrade linux-image-gkeop-6.8Upgrade linux-image-6.17.0-1021-azureUpgrade linux-image-oem-24.04aUpgrade linux-image-6.8.0-1041-gkeopUpgrade linux-image-aws-64k-lts-24.04Upgrade linux-image-nvidia-tegra-6.8Upgrade linux-image-6.8.0-1054-nvidia-lowlatency-64kUpgrade linux-image-6.8.0-1058-gcp-64kUpgrade linux-image-lowlatency-64k-hwe-22.04Upgrade linux-image-nvidia-64k-hwe-24.04Upgrade linux-image-raspi-realtimeUpgrade linux-image-6.17.0-1031-nvidiaUpgrade linux-image-6.8.0-1054-nvidia-64kUpgrade linux-image-realtimeUpgrade linux-image-6.8.0-1055-aws-fipsUpgrade linux-image-gcp-64k-lts-24.04Upgrade linux-image-6.8.0-1055-ibmUpgrade linux-image-oracleUpgrade linux-image-oracle-6.17Upgrade linux-image-fips-6.8Upgrade linux-image-nvidia-64k-hwe-22.04Upgrade linux-image-6.8.0-117-lowlatencyUpgrade linux-image-nvidia-lowlatency-6.8Upgrade linux-image-6.8.0-1032-xilinxUpgrade linux-image-xilinxUpgrade linux-image-nvidia-lowlatency-64kUpgrade linux-image-6.8.0-1059-azure-fipsUpgrade linux-image-6.8.0-1054-gke-64kUpgrade linux-image-6.8.0-1056-azureUpgrade linux-image-nvidia-lowlatency-64k-6.8Upgrade linux-image-gkeUpgrade linux-image-gcp-6.8Upgrade linux-image-6.8.0-1059-azureUpgrade linux-image-aws-64k-6.8Upgrade linux-image-gcp-6.17Upgrade linux-image-6.8.0-1055-awsUpgrade linux-image-nvidia-6.17Upgrade linux-image-azure-fdeUpgrade linux-image-gkeopUpgrade linux-image-azure-6.17Upgrade linux-image-6.8.0-1058-gcp-fipsUpgrade linux-image-6.8.0-1054-nvidia-lowlatencyUpgrade linux-image-raspi-realtime-6.8Upgrade linux-image-oem-24.04cUpgrade linux-image-nvidia-lowlatencyUpgrade linux-image-nvidia-6.8Upgrade linux-image-kvmUpgrade linux-image-gcp-fips-6.8Upgrade linux-image-aws-fipsUpgrade linux-image-virtual-6.8Upgrade linux-image-realtime-6.8.1Upgrade linux-image-gcp-64k-6.17Upgrade linux-image-6.17.0-1030-oemUpgrade linux-image-6.17.0-1021-gcpUpgrade linux-image-nvidia-tegraUpgrade linux-image-azure-fipsUpgrade linux-image-xilinx-zynqmpUpgrade linux-image-6.8.0-1054-gkeUpgrade linux-image-6.8.0-1024-nvidia-tegraUpgrade linux-image-6.8.0-1054-nvidiaUpgrade linux-image-gke-64k-6.8Upgrade linux-image-gcp-64k-6.8Upgrade linux-image-realtime-6.17Upgrade linux-image-6.8.0-1055-aws-64kUpgrade linux-image-genericUpgrade linux-image-generic-64k-6.8Upgrade linux-image-gcp-64kUpgrade linux-image-oracle-64k-6.17Upgrade linux-image-oracle-64kUpgrade linux-image-gcp-fipsUpgrade linux-image-6.8.0-117-generic-64kUpgrade linux-image-raspi-6.8Upgrade linux-image-aws-lts-24.04Upgrade linux-image-nvidia-hwe-24.04Upgrade linux-image-lowlatency-6.8Upgrade linux-image-gke-64kUpgrade linux-image-6.17.0-1031-nvidia-64kUpgrade linux-image-xilinx-6.8Upgrade linux-image-raspiUpgrade linux-image-nvidia-64k-6.17Upgrade linux-image-gcp-lts-24.04Upgrade linux-image-6.8.0-1056-raspiUpgrade linux-image-6.17.0-1021-gcp-64kUpgrade linux-image-realtime-hwe-24.04Upgrade linux-image-gke-6.8Upgrade linux-image-generic-64kUpgrade linux-image-aws-6.8Upgrade linux-image-nvidiaUpgrade linux-image-6.8.0-117-lowlatency-64kUpgrade linux-image-nvidia-64kUpgrade linux-image-azureUpgrade linux-image-aws-fips-6.8Upgrade linux-image-6.8.0-1024-nvidia-tegra-rtUpgrade linux-image-6.8.1-1051-realtimeUpgrade linux-image-6.8.0-1058-gcp | May 25, 2026 | May 19, 2026 |
| Vmware Photon_os | — | Use 'tdnf update' to upgrade all packages to the latest version. | May 27, 2026 | Feb 4, 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