🛡️ AZL-64625 — kernel (CVE-2025-38170)

⚪ Unknown ✅ No Known Exploit OSV
N/A
CVSS Score
0 Low4 Medium7 High9 Critical10

Description

CVE-2025-38170 affecting package kernel for versions less than 6.6.96.1-1

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 ]

Affected software

AZL-64625 is recorded against 1 package.

  • kernel (fixed in 6.6.96.1-1)

Timeline and source

Published on 3 July 2025 and last revised on 21 April 2026. No public exploit is currently recorded for this entry. Record sourced from OSV.

References

nvd.nist.gov (Web)

Details

Severity Unknown
CVSS Score N/A
CVSS Vector N/A
CWE N/A
Public Exploit ✅ No
Source OSV
Published 2025-07-03
Updated 2026-08-12
Modified 2026-04-21
Fix URL N/A

Affected Packages

Software From version Fixed in
kernel 6.6.96.1-1

Similar Threats

Free Vulnerability Check

Is your site affected by AZL-64625?

BotEraser helps you identify potentially vulnerable plugins and themes by checking your installation against AZL-64625 and other known CVE records.

Scan My Site Free →

No credit card required  ·  Results in minutes

ⓘ Data Notice: The information presented above has been compiled from publicly available internet sources. Boteraser aggregates this data solely for informational purposes and does not independently classify, evaluate, or endorse any findings about the vulnerabilities listed. The accuracy and completeness of this information is the sole responsibility of the original publishers. Boteraser and its operators accept no liability for any decisions made based on this data.

Browse related advisories

All advisoriesAzure LinuxAzure Linux Undated