CVE-2025-38169 (GCVE-0-2025-38169)

Vulnerability from cvelistv5 – Published: 2025-07-03 08:36 – Updated: 2026-08-05 12:00
VLAI
Title
arm64/fpsimd: Avoid clobbering kernel FPSIMD state with SMSTOP
Summary
In the Linux kernel, the following vulnerability has been resolved: arm64/fpsimd: Avoid clobbering kernel FPSIMD state with SMSTOP On system with SME, a thread's kernel FPSIMD state may be erroneously clobbered during a context switch immediately after that state is restored. Systems without SME are unaffected. If the CPU happens to be in streaming SVE mode before a context switch to a thread with kernel FPSIMD state, fpsimd_thread_switch() will restore the kernel FPSIMD state using fpsimd_load_kernel_state() while the CPU is still in streaming SVE mode. When fpsimd_thread_switch() subsequently calls fpsimd_flush_cpu_state(), this will execute an SMSTOP, causing an exit from streaming SVE mode. The exit from streaming SVE mode will cause the hardware to reset a number of FPSIMD/SVE/SME registers, clobbering the FPSIMD state. Fix this by calling fpsimd_flush_cpu_state() before restoring the kernel FPSIMD state.
Assigner
Impacted products
Vendor Product Version
Linux Linux Affected: e92bee9f861b466c676f0200be3e46af7bc4ac6b , < 55d52af498daea75aa03ba9b7e444c8ae495ac20 (git)
Affected: e92bee9f861b466c676f0200be3e46af7bc4ac6b , < a305821f597ec943849d3e53924adb88c61ed682 (git)
Affected: e92bee9f861b466c676f0200be3e46af7bc4ac6b , < 01098d893fa8a6edb2b56e178b798e3e6b674f02 (git)
Affected: e003c485ac82a9f8de4204912ed059ac6dd4257c (git)
Affected: 25b90cd122d546823da90b916f7c3289dfe83a99 (git)
Affected: 6.8.12 , < 6.9 (semver)
Affected: 6.9.3 , < 6.10 (semver)
Create a notification for this product.
Linux Linux Affected: 6.10
Unaffected: 0 , < 6.10 (semver)
Unaffected: 6.12.34 , ≤ 6.12.* (semver)
Unaffected: 6.15.3 , ≤ 6.15.* (semver)
Unaffected: 6.16 , ≤ * (original_commit_for_fix)
Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "arch/arm64/kernel/fpsimd.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "55d52af498daea75aa03ba9b7e444c8ae495ac20",
              "status": "affected",
              "version": "e92bee9f861b466c676f0200be3e46af7bc4ac6b",
              "versionType": "git"
            },
            {
              "lessThan": "a305821f597ec943849d3e53924adb88c61ed682",
              "status": "affected",
              "version": "e92bee9f861b466c676f0200be3e46af7bc4ac6b",
              "versionType": "git"
            },
            {
              "lessThan": "01098d893fa8a6edb2b56e178b798e3e6b674f02",
              "status": "affected",
              "version": "e92bee9f861b466c676f0200be3e46af7bc4ac6b",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "e003c485ac82a9f8de4204912ed059ac6dd4257c",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "25b90cd122d546823da90b916f7c3289dfe83a99",
              "versionType": "git"
            },
            {
              "lessThan": "6.9",
              "status": "affected",
              "version": "6.8.12",
              "versionType": "semver"
            },
            {
              "lessThan": "6.10",
              "status": "affected",
              "version": "6.9.3",
              "versionType": "semver"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "arch/arm64/kernel/fpsimd.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.10"
            },
            {
              "lessThan": "6.10",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.34",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.15.*",
              "status": "unaffected",
              "version": "6.15.3",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.16",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.34",
                  "versionStartIncluding": "6.10",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.15.3",
                  "versionStartIncluding": "6.10",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.16",
                  "versionStartIncluding": "6.10",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionStartIncluding": "6.8.12",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionStartIncluding": "6.9.3",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\narm64/fpsimd: Avoid clobbering kernel FPSIMD state with SMSTOP\n\nOn system with SME, a thread\u0027s kernel FPSIMD state may be erroneously\nclobbered during a context switch immediately after that state is\nrestored. Systems without SME are unaffected.\n\nIf the CPU happens to be in streaming SVE mode before a context switch\nto a thread with kernel FPSIMD state, fpsimd_thread_switch() will\nrestore the kernel FPSIMD state using fpsimd_load_kernel_state() while\nthe CPU is still in streaming SVE mode. When fpsimd_thread_switch()\nsubsequently calls fpsimd_flush_cpu_state(), this will execute an\nSMSTOP, causing an exit from streaming SVE mode. The exit from\nstreaming SVE mode will cause the hardware to reset a number of\nFPSIMD/SVE/SME registers, clobbering the FPSIMD state.\n\nFix this by calling fpsimd_flush_cpu_state() before restoring the kernel\nFPSIMD state."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7.8,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - Triggering requires executing SMSTART/streaming-SVE instructions at EL0 on the affected CPU and generating local scheduler pressure, so the attacker must be able to run code on the target. A remote peer cannot place the CPU into streaming SVE mode.\nAC:L - The attacker controls both sides of the race \u2014 they create the streaming-mode task and the kernel-mode NEON workload (AF_ALG, dm-crypt/fscrypt I/O, kTLS), and can pin both to one CPU via sched_setaffinity so ordinary tick preemption reproduces the clobber on demand. No memory layout or victim state outside the attacker\u0027s influence is needed, and CONFIG_ARM64_SME is default y.\nPR:L - do_sme_acc() enables SME and streaming mode for any EL0 task with no capability, namespace, or sysctl gate, and driving kernel-mode NEON via AF_ALG or plain I/O on an encrypted/checksummed filesystem needs no privilege. Only unprivileged local code execution is required.\nUI:N - The attacker\u0027s own tasks supply both the streaming-mode context and the preempted kernel NEON section; no victim action is needed, and any concurrent crypto/RAID work on the system is silently corrupted.\nS:U - The corruption is confined to kernel FPSIMD register state managed by the same kernel security authority; KVM already flushes and SMSTOPs guest FP state in kvm_arch_vcpu_put_fp(), so no guest/host or IOMMU boundary is crossed.\nC:H - Zeroing V0-V31 mid-operation destroys the in-register AES round-key schedule and IV (aes-ce.S load_round_keys/cbciv) or the ChaCha20 state, so the affected blocks are emitted under a known all-zero key \u2014 a fixed, invertible transform. An attacker who observes the resulting dm-crypt/fscrypt blocks or IPsec/kTLS/WireGuard packets recovers the plaintext that encryption was supposed to protect.\nI:H - Kernel crypto, hash, CRC and RAID6 computations silently return wrong results that are written to disk and the wire, corrupting encrypted volumes, RAID parity, filesystem checksums and dm-verity/dm-integrity data. A zeroed GHASH key also yields predictable authentication tags, enabling forgery against integrity-protected data.\nA:H - The silent miscomputation propagates into dm-verity/dm-integrity/filesystem checksum verification failures, producing I/O errors, forced read-only remounts, errors=panic aborts and Android restart-on-corruption reboots, plus unrecoverable RAID6 parity loss. The attacker can trigger it repeatedly and indefinitely."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T12:00:02.043Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/55d52af498daea75aa03ba9b7e444c8ae495ac20"
        },
        {
          "url": "https://git.kernel.org/stable/c/a305821f597ec943849d3e53924adb88c61ed682"
        },
        {
          "url": "https://git.kernel.org/stable/c/01098d893fa8a6edb2b56e178b798e3e6b674f02"
        }
      ],
      "title": "arm64/fpsimd: Avoid clobbering kernel FPSIMD state with SMSTOP",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2025-38169",
    "datePublished": "2025-07-03T08:36:08.393Z",
    "dateReserved": "2025-04-16T04:51:23.991Z",
    "dateUpdated": "2026-08-05T12:00:02.043Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2025-38169",
      "date": "2026-08-14",
      "epss": "0.00147",
      "percentile": "0.0444"
    },
    "nvd": "{\"cve\":{\"id\":\"CVE-2025-38169\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2025-07-03T09:15:32.517\",\"lastModified\":\"2026-07-30T06:22:56.713\",\"vulnStatus\":\"Modified\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\narm64/fpsimd: Avoid clobbering kernel FPSIMD state with SMSTOP\\n\\nOn system with SME, a thread\u0027s kernel FPSIMD state may be erroneously\\nclobbered during a context switch immediately after that state is\\nrestored. Systems without SME are unaffected.\\n\\nIf the CPU happens to be in streaming SVE mode before a context switch\\nto a thread with kernel FPSIMD state, fpsimd_thread_switch() will\\nrestore the kernel FPSIMD state using fpsimd_load_kernel_state() while\\nthe CPU is still in streaming SVE mode. When fpsimd_thread_switch()\\nsubsequently calls fpsimd_flush_cpu_state(), this will execute an\\nSMSTOP, causing an exit from streaming SVE mode. The exit from\\nstreaming SVE mode will cause the hardware to reset a number of\\nFPSIMD/SVE/SME registers, clobbering the FPSIMD state.\\n\\nFix this by calling fpsimd_flush_cpu_state() before restoring the kernel\\nFPSIMD state.\"},{\"lang\":\"es\",\"value\":\"En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: arm64/fpsimd: Evite afectar negativamente al estado FPSIMD del kernel con SMSTOP En sistemas con SMSTOP, el estado FPSIMD del kernel de un subproceso puede verse afectado negativamente durante un cambio de contexto inmediatamente despu\u00e9s de restaurarse dicho estado. Los sistemas sin SMSTOP no se ven afectados. Si la CPU est\u00e1 en modo SVE de transmisi\u00f3n antes de un cambio de contexto a un subproceso con estado FPSIMD del kernel, fpsimd_thread_switch() restaurar\u00e1 el estado FPSIMD del kernel mediante fpsimd_load_kernel_state() mientras la CPU sigue en modo SVE de transmisi\u00f3n. Cuando fpsimd_thread_switch() llama posteriormente a fpsimd_flush_cpu_state(), se ejecutar\u00e1 un SMSTOP, lo que provocar\u00e1 la salida del modo SVE de transmisi\u00f3n. La salida del modo SVE de transmisi\u00f3n provocar\u00e1 que el hardware restablezca varios registros FPSIMD/SVE/SME, afectando negativamente al estado FPSIMD. Solucione esto llamando a fpsimd_flush_cpu_state() antes de restaurar el estado FPSIMD del kernel.\"}],\"affected\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"affectedData\":[{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"unaffected\",\"programFiles\":[\"arch/arm64/kernel/fpsimd.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"e92bee9f861b466c676f0200be3e46af7bc4ac6b\",\"lessThan\":\"55d52af498daea75aa03ba9b7e444c8ae495ac20\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"e92bee9f861b466c676f0200be3e46af7bc4ac6b\",\"lessThan\":\"a305821f597ec943849d3e53924adb88c61ed682\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"e92bee9f861b466c676f0200be3e46af7bc4ac6b\",\"lessThan\":\"01098d893fa8a6edb2b56e178b798e3e6b674f02\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"e003c485ac82a9f8de4204912ed059ac6dd4257c\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"25b90cd122d546823da90b916f7c3289dfe83a99\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"6.8.12\",\"lessThan\":\"6.9\",\"versionType\":\"semver\",\"status\":\"affected\"},{\"version\":\"6.9.3\",\"lessThan\":\"6.10\",\"versionType\":\"semver\",\"status\":\"affected\"}]},{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"affected\",\"programFiles\":[\"arch/arm64/kernel/fpsimd.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"6.10\",\"status\":\"affected\"},{\"version\":\"0\",\"lessThan\":\"6.10\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.12.34\",\"lessThanOrEqual\":\"6.12.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.15.3\",\"lessThanOrEqual\":\"6.15.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.16\",\"lessThanOrEqual\":\"*\",\"versionType\":\"original_commit_for_fix\",\"status\":\"unaffected\"}]}]}],\"metrics\":{\"cvssMetricV31\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"type\":\"Secondary\",\"cvssData\":{\"version\":\"3.1\",\"vectorString\":\"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H\",\"baseScore\":7.8,\"baseSeverity\":\"HIGH\",\"attackVector\":\"LOCAL\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"LOW\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"HIGH\",\"integrityImpact\":\"HIGH\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":1.8,\"impactScore\":5.9},{\"source\":\"nvd@nist.gov\",\"type\":\"Primary\",\"cvssData\":{\"version\":\"3.1\",\"vectorString\":\"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H\",\"baseScore\":5.5,\"baseSeverity\":\"MEDIUM\",\"attackVector\":\"LOCAL\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"LOW\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"NONE\",\"integrityImpact\":\"NONE\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":1.8,\"impactScore\":3.6}]},\"weaknesses\":[{\"source\":\"nvd@nist.gov\",\"type\":\"Primary\",\"description\":[{\"lang\":\"en\",\"value\":\"NVD-CWE-noinfo\"}]}],\"configurations\":[{\"nodes\":[{\"operator\":\"OR\",\"negate\":false,\"cpeMatch\":[{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"6.8.12\",\"versionEndExcluding\":\"6.9\",\"matchCriteriaId\":\"A2D25EF8-8B93-4187-9555-F83C6F1ECA47\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"6.9.3\",\"versionEndExcluding\":\"6.12.34\",\"matchCriteriaId\":\"905725D5-81AB-4E66-B474-D520C73FD7E8\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"6.13\",\"versionEndExcluding\":\"6.15.3\",\"matchCriteriaId\":\"0541C761-BD5E-4C1A-8432-83B375D7EB92\"}]}]}],\"references\":[{\"url\":\"https://git.kernel.org/stable/c/01098d893fa8a6edb2b56e178b798e3e6b674f02\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/55d52af498daea75aa03ba9b7e444c8ae495ac20\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/a305821f597ec943849d3e53924adb88c61ed682\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]}]}}",
    "redhat_vex": {
      "aggregate_severity": "Moderate",
      "current_release_date": "2026-07-30T09:13:25+00:00",
      "cve": "CVE-2025-38169",
      "id": "CVE-2025-38169",
      "initial_release_date": "2025-07-03T00:00:00+00:00",
      "product_status:known_affected": "184",
      "product_status:known_not_affected": "90",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: Linux kernel: Data corruption due to FPSIMD state clobbering during context switch",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2025/cve-2025-38169.json",
      "version": "3"
    }
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.

Loading…

Detection rules are retrieved from Rulezet.

Loading…

Loading…

Loading…