Cloudanix VulnDB

CVE-2025-38027

None

CVSS

—

EPSS

0.2%

Published

Jun 18, 2025

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

A bug in how the Linux kernel manages certain power control chips can cause crashes or errors when those chips fail to start, requiring a software update to keep systems stable.

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

What it actually does

Use-after-free due to passing a stack-allocated of_regulator_match array to of_regulator_match(); on probe failure devm_of_regulator_put_matches() later calls of_node_put() on the now-invalid stack pointer.

Why it matters to the business

Kernel instability or crashes on systems using the max20086 regulator driver, especially during hardware initialization failures; high downstream prevalence in Linux distributions increases patch urgency despite low exploitation likelihood.

How an attack unfolds

An attacker with local access or the ability to trigger regulator probe failures (e.g., via hardware manipulation or faulty device trees) can induce the use-after-free condition, resulting in a kernel oops and potential denial of service; listed threat actors have targeted similar Linux kernel UAF primitives for privilege escalation but no public exploitation of this specific issue is known.

How to fix it

Update the Linux kernel to commit 6ba30f7aa2c550b2ac04f16b81a19a8c045b8660 or later; for Mageia 5 packages upgrade keepassx to 0.4.4-1.mga5 or newer equivalent kernel packages containing the fix; rebuild and reboot affected systems.

How to confirm the fix worked

Confirm the running kernel contains commit 6ba30f7aa2c550b2ac04f16b81a19a8c045b8660; attempt to load the max20086 driver with a failing DEVICE_ID read and verify absence of kobject_put stack traces in dmesg.

Typical attack path

  1. Trigger max20086 device probe failure (e.g., read of DEVICE_ID register returns error)
  2. of_regulator_match() is invoked with stack-allocated matches array
  3. devm_of_regulator_put_matches() stores the stack pointer inside a devres-allocated structure
  4. Probe failure causes the devres release function to execute after the original stack frame has exited
  5. of_node_put() is called on the dangling stack pointer, triggering kobject warnings and stack trace

How to detect it

Review dmesg and kernel logs for strings indicating max20086 probe failure followed by kobject_put warnings on uninitialized objects; correlate with device tree entries referencing max20086 regulators; examine crash dumps for stack traces involving devm_of_regulator_put_matches.

  • max20086.*Failed to read DEVICE_ID reg
  • kobject:.*is not initialized, yet
  • kobject_put() is being called

What your security team should do

  • Prioritize kernel updates on all systems exposing the max20086 regulator driver
  • Monitor EPSS trend and threat actor activity around similar Linux kernel UAF issues
  • Test probe-failure paths in lab environments before deploying to production
  • Apply updates within normal patch windows given low EPSS and absence from KEV

The record

In the Linux kernel, the following vulnerability has been resolved: regulator: max20086: fix invalid memory access max20086_parse_regulators_dt() calls of_regulator_match() using an array of struct of_regulator_match allocated on the stack for the matches argument. of_regulator_match() calls devm_of_regulator_put_matches(), which calls devres_alloc() to allocate a struct devm_of_regulator_matches which will be de-allocated using devm_of_regulator_put_matches(). struct devm_of_regulator_matches is populated with the stack allocated matches array. If the device fails to probe, devm_of_regulator_put_matches() will be called and will try to call of_node_put() on that stack pointer, generating the following dmesg entries: max20086 6-0028: Failed to read DEVICE_ID reg: -121 kobject: '\xc0$\xa5\x03' (000000002cebcb7a): is not initialized, yet kobject_put() is being called. Followed by a stack trace matching the call flow described above. Switch to allocating the matches array using devm_kcalloc() to avoid accessing the stack pointer long after it's out of scope. This also has the advantage of allowing multiple max20086 to probe without overriding the data stored inside the global of_regulator_match.

Affected packages

Ecosystem Package Introduced Fixed
Debian:11 linux-6.1 0 6.1.140-1~deb11u1
Debian:12 linux 0 6.1.140-1
Debian:13 linux 0 6.12.30-1
Debian:14 linux 0 6.12.30-1
Linux Kernel 5.17.0 6.1.140
SUSE:Linux Enterprise High Availability Extension 15 SP6 kernel-default 0 6.4.0-150600.23.60.5
SUSE:Linux Enterprise Live Patching 15 SP6 kernel-default 0 6.4.0-150600.23.60.5
SUSE:Linux Enterprise Live Patching 15 SP6 kernel-livepatch-SLE15-SP6-RT_Update_13 0 1-150600.1.5.1
SUSE:Linux Enterprise Live Patching 15 SP6 kernel-livepatch-SLE15-SP6_Update_13 0 1-150600.13.6.4
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-64kb 0 6.4.0-150600.23.60.4
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-default 0 6.4.0-150600.23.60.5
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-default-base 0 6.4.0-150600.23.60.5.150600.12.26.4
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-source 0 6.4.0-150600.23.60.4
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-zfcpdump 0 6.4.0-150600.23.60.4
SUSE:Linux Enterprise Module for Confidential Computing Technical Preview 15 SP6 kernel-coco 0 6.4.0-15061.28.coco15sp6.1
SUSE:Linux Enterprise Module for Confidential Computing Technical Preview 15 SP6 kernel-coco_debug 0 6.4.0-15061.28.coco15sp6.1
SUSE:Linux Enterprise Module for Confidential Computing Technical Preview 15 SP6 kernel-source-coco 0 6.4.0-15061.28.coco15sp6.1
SUSE:Linux Enterprise Module for Confidential Computing Technical Preview 15 SP6 kernel-syms-coco 0 6.4.0-15061.28.coco15sp6.1
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-docs 0 6.4.0-150600.23.60.3
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-obs-build 0 6.4.0-150600.23.60.3
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-source 0 6.4.0-150600.23.60.4
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-syms 0 6.4.0-150600.23.60.4
SUSE:Linux Enterprise Module for Legacy 15 SP6 kernel-default 0 6.4.0-150600.23.60.5
SUSE:Linux Enterprise Module for Public Cloud 15 SP6 kernel-azure 0 6.4.0-150600.8.43.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP6 kernel-source-azure 0 6.4.0-150600.8.43.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP6 kernel-syms-azure 0 6.4.0-150600.8.43.1
SUSE:Linux Enterprise Workstation Extension 15 SP6 kernel-default 0 6.4.0-150600.23.60.5
SUSE:Real Time Module 15 SP6 kernel-rt 0 6.4.0-150600.10.44.1
SUSE:Real Time Module 15 SP6 kernel-rt_debug 0 6.4.0-150600.10.44.1
SUSE:Real Time Module 15 SP6 kernel-source-rt 0 6.4.0-150600.10.44.1
SUSE:Real Time Module 15 SP6 kernel-syms-rt 0 6.4.0-150600.10.44.1
openSUSE:Leap 15.6 dtb-aarch64 0 6.4.0-150600.23.60.3
openSUSE:Leap 15.6 kernel-64kb 0 6.4.0-150600.23.60.4
openSUSE:Leap 15.6 kernel-azure 0 6.4.0-150600.8.43.1
openSUSE:Leap 15.6 kernel-debug 0 6.4.0-150600.23.60.4
openSUSE:Leap 15.6 kernel-default 0 6.4.0-150600.23.60.5
openSUSE:Leap 15.6 kernel-default-base 0 6.4.0-150600.23.60.5.150600.12.26.4
openSUSE:Leap 15.6 kernel-docs 0 6.4.0-150600.23.60.3
openSUSE:Leap 15.6 kernel-kvmsmall 0 6.4.0-150600.23.60.4
openSUSE:Leap 15.6 kernel-obs-build 0 6.4.0-150600.23.60.3
openSUSE:Leap 15.6 kernel-obs-qa 0 6.4.0-150600.23.60.2
openSUSE:Leap 15.6 kernel-rt 0 6.4.0-150600.10.44.1
openSUSE:Leap 15.6 kernel-rt_debug 0 6.4.0-150600.10.44.1
openSUSE:Leap 15.6 kernel-source 0 6.4.0-150600.23.60.4
openSUSE:Leap 15.6 kernel-source-azure 0 6.4.0-150600.8.43.1
openSUSE:Leap 15.6 kernel-source-rt 0 6.4.0-150600.10.44.1
openSUSE:Leap 15.6 kernel-syms 0 6.4.0-150600.23.60.4
openSUSE:Leap 15.6 kernel-syms-azure 0 6.4.0-150600.8.43.1
openSUSE:Leap 15.6 kernel-syms-rt 0 6.4.0-150600.10.44.1
openSUSE:Leap 15.6 kernel-zfcpdump 0 6.4.0-150600.23.60.4

Related vulnerabilities