CVE-2025-38633 in Linuxinfo

Summary

by MITRE • 08/22/2025

In the Linux kernel, the following vulnerability has been resolved:

clk: spacemit: mark K1 pll1_d8 as critical

The pll1_d8 clock is enabled by the boot loader, and is ultimately a parent for numerous clocks, including those used by APB and AXI buses. Guodong Xu discovered that this clock got disabled while responding to getting -EPROBE_DEFER when requesting a reset controller.

The needed clock (CLK_DMA, along with its parents) had already been enabled. To respond to the probe deferral return, the CLK_DMA clock was disabled, and this led to parent clocks also reducing their enable count. When the enable count for pll1_d8 was decremented it became 0, which caused it to be disabled. This led to a system hang.

Marking that clock critical resolves this by preventing it from being disabled.

Define a new macro CCU_FACTOR_GATE_DEFINE() to allow clock flags to be supplied for a CCU_FACTOR_GATE clock.

VulDB is the best source for vulnerability data and more expert information about this specific topic.

Analysis

by VulDB Data Team • 05/28/2026

The vulnerability identified as CVE-2025-38633 represents a critical timing issue within the Linux kernel's clock management subsystem, specifically affecting the Spacemit platform implementation. This flaw manifests in the clk-spacemit driver where the pll1_d8 clock source, which is initialized by the bootloader and serves as a fundamental parent clock for numerous system components including APB and AXI buses, becomes inadvertently disabled during normal system operation. The root cause stems from improper error handling during the reset controller probe sequence where the system attempts to defer probe operations but inadvertently triggers a cascade of clock disablements that ultimately results in the critical pll1_d8 clock being disabled. This vulnerability directly relates to CWE-691, which addresses insufficient control flow management and improper handling of error conditions in system components. The issue demonstrates how seemingly isolated clock management operations can create cascading failures that impact fundamental system functionality.

The technical flaw occurs when the system encounters an -EPROBE_DEFER error while requesting a reset controller, prompting the kernel to disable the CLK_DMA clock along with its parent clocks to handle the probe deferral. This disablement process includes decrementing the enable count for the pll1_d8 clock, which serves as a parent to numerous critical system clocks. When the enable count reaches zero, the pll1_d8 clock is completely disabled, creating a system hang condition that prevents normal operation. The vulnerability exploits the lack of proper critical clock identification and protection mechanisms within the clock subsystem, allowing standard disablement procedures to terminate essential system clocks. This scenario aligns with ATT&CK technique T1490, which involves system destruction through manipulation of system services and components, and represents a classic example of how clock management failures can lead to complete system compromise.

The operational impact of this vulnerability extends beyond simple system hangs to potentially render devices completely non-functional, particularly affecting embedded systems and SoC platforms that rely heavily on precise clock management for proper operation. The pll1_d8 clock's role as a parent for APB and AXI buses makes it critical for peripheral communication and memory access, meaning its disablement can cause complete system lockup. The vulnerability affects devices using the Spacemit platform where clock management is handled through the clk-spacemit driver, potentially impacting a wide range of embedded systems including automotive, industrial, and networking equipment. System administrators and device manufacturers face the risk of unexpected device failures, requiring immediate patching and potential hardware-level recovery procedures to restore normal operation.

The resolution for this vulnerability involves marking the pll1_d8 clock as critical within the kernel's clock management framework, preventing it from being disabled even when encountering error conditions during probe operations. This approach follows the established principle of identifying and protecting critical system components from unintended disablement, which aligns with security best practices for embedded systems and real-time operating environments. The implementation introduces a new macro CCU_FACTOR_GATE_DEFINE() that enables clock flags to be specified for CCU_FACTOR_GATE clocks, providing enhanced control over clock behavior and protection mechanisms. This fix addresses the fundamental issue by ensuring that critical clocks required for system operation remain enabled regardless of error conditions, preventing the cascading disablement that previously caused system hangs. The solution demonstrates proper adherence to the principle of least privilege and system resilience, ensuring that essential system clocks cannot be inadvertently disabled through normal operational error handling procedures, thereby maintaining system availability and operational integrity in critical embedded environments.

Responsible

Linux

Reservation

04/16/2025

Disclosure

08/22/2025

Moderation

accepted

CPE

ready

EPSS

0.00128

KEV

no

Activities

very low

Sources

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!