Cloudanix VulnDB

CVE-2025-38631

None

CVSS

—

EPSS

0.2%

Published

Aug 22, 2025

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

A bug in certain Linux systems can cause the computer to crash during startup when clock hardware is initialized, leading to unexpected restarts until the software is updated.

Exploitation
Local Privilege
Attacker needs
Local User
Complexity
Moderate
Impact
Denial Of Service
Component
OS kernel
Class
Other
Remediation
Patch
Effort
Medium
Patch risk
Low

What it actually does

Enabling runtime PM for clock suppliers in a power domain without an explicit resume allows the power domain to be cut off after clk_register(), leading to a synchronous external abort when clk_mux_get_parent attempts to access BLK_CTL registers during of_clk_add_hw_provider.

Why it matters to the business

Kernel crashes during device probing or boot on affected systems can cause unplanned downtime and require manual intervention to restore service; the issue affects Linux kernel-based deployments including certain container images.

How an attack unfolds

An attacker with the ability to trigger deferred_probe_work_func on an imx95 platform (for example via crafted device tree or module load) can induce the crash path, though the flaw is a stability bug rather than a code-execution vector and no named threat actors have been observed exploiting it.

How to fix it

Update to Linux kernel commit c1dead8bb303f86905ea6a09e5acda931165453b or later; for Chainguard images upgrade the listed openjdk-21-openj9 packages to version 0.53.0-r0 or newer; replace pm_runtime_enable/pm_runtime_disable pairs with devm_pm_runtime_enable and remove manual disable calls in cleanup paths.

How to confirm the fix worked

Confirm the presence of devm_pm_runtime_enable in imx95_bc_probe and absence of the original pm_runtime_disable in the error path; boot an imx95 system and verify that deferred_probe_work_func no longer triggers the synchronous abort.

Typical attack path

  1. Trigger platform device probe for imx95-blk-ctl
  2. Call pm_runtime_enable without a preceding resume
  3. clk_register completes and power domain is cut off
  4. of_clk_add_hw_provider invokes clk_core_reparent_orphans_nolock
  5. clk_mux_get_parent dereferences hardware registers that are now inaccessible
  6. Synchronous external abort terminates the workqueue

How to detect it

Search kernel logs for the exact call trace containing clk_mux_get_parent, clk_core_reparent_orphans_nolock, and imx95_bc_probe; correlate with workqueue events_unbound and deferred_probe_work_func entries around the time of the abort.

What your security team should do

  • Prioritize kernel updates on all imx95-based systems within normal maintenance windows
  • Scan Chainguard container images for the affected openjdk-21-openj9 packages and rebuild with 0.53.0-r0
  • Monitor boot logs for 'synchronous external abort' and 'clk_mux_get_parent' entries
  • Test runtime PM changes in staging environments before production rollout

The record

In the Linux kernel, the following vulnerability has been resolved: clk: imx95-blk-ctl: Fix synchronous abort When enabling runtime PM for clock suppliers that also belong to a power domain, the following crash is thrown: error: synchronous external abort: 0000000096000010 [#1] PREEMPT SMP Workqueue: events_unbound deferred_probe_work_func pstate: 60400009 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--) pc : clk_mux_get_parent+0x60/0x90 lr : clk_core_reparent_orphans_nolock+0x58/0xd8 Call trace: clk_mux_get_parent+0x60/0x90 clk_core_reparent_orphans_nolock+0x58/0xd8 of_clk_add_hw_provider.part.0+0x90/0x100 of_clk_add_hw_provider+0x1c/0x38 imx95_bc_probe+0x2e0/0x3f0 platform_probe+0x70/0xd8 Enabling runtime PM without explicitly resuming the device caused the power domain cut off after clk_register() is called. As a result, a crash happens when the clock hardware provider is added and attempts to access the BLK_CTL register. Fix this by using devm_pm_runtime_enable() instead of pm_runtime_enable() and getting rid of the pm_runtime_disable() in the cleanup path.

Affected packages

Ecosystem Package Introduced Fixed
Debian:13 linux 0 No fix
Debian:14 linux 0 No fix
Debian:14 linux 0 6.16.3-1
Linux Kernel 6.10.0 6.12.42
openSUSE:Leap 16.0 dtb-aarch64 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-64kb 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-default 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-default-base 0 6.12.0-160000.6.1.160000.2.4
openSUSE:Leap 16.0 kernel-docs 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-kvmsmall 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-obs-build 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-obs-qa 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-rt 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-source 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-syms 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-zfcpdump 0 6.12.0-160000.6.1

Related vulnerabilities