ZeroHour

CVE-2026-89992

mass

Invalid kfree() in Linux kernel cpuidle dt_idle_genpd causes kernel memory corruption

CVSS 3.1
8.4 high
EPSS
Published
()
Modified
AI analysis

CVE-2026-89992 is a memory-corruption flaw in the Linux kernel's cpuidle dt_idle_genpd code: dt_idle_pd_alloc() allocates the full device-tree node path with kasprintf() but points pd->name at the kbasename() inside that buffer, and dt_idle_pd_free() then calls kfree() on that interior pointer instead of the start of the allocation. The bug is triggered whenever a device-tree-based CPU idle power domain created through this helper is torn down (e.g., on domain removal or error paths) on ARM-class systems whose CPU idle states are managed via generic PM domains. Freeing a non-start-of-allocation pointer can corrupt slab state, giving a local attacker a route to kernel crashes (denial of service) and potentially privilege escalation, consistent with the CVSS 3.1 score of 8.4 (local vector, no privileges, high confidentiality/integrity/availability impact). Affected systems are Linux kernels containing the dt_idle_genpd code, which is used on various ARM SoC platforms such as Android and embedded devices rather than typical x86 servers. There is no evidence of exploitation: the flaw is not in CISA KEV and no public proof-of-concept is known.

What to do: Update affected devices with a kernel that includes the upstream patch 'cpuidle: dt_idle_genpd: kfree() the original name allocation' as it reaches your distro or SoC vendor's kernel branches. Until patched, limit untrusted local code execution on ARM devices using DT-based CPU idle power domains, since there is no known workaround and no active exploitation has been observed.

Affected
Linux kernel (cpuidle dt_idle_genpd name allocation/free handling)
Estimated exposure
masshundreds of millions of Linux-powered devices plausibly affected (estimated; billions run Linux and ARM SoCs using DT-based idle PM domains carry this code) — The Linux kernel ships on billions of devices and the dt_idle_genpd cpuidle code is in mainline kernels used by ARM SoC platforms (Android phones, embedded boards), though only platforms exercising this idle-PM-domain path are actually…

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

In the Linux kernel, the following vulnerability has been resolved: cpuidle: dt_idle_genpd: kfree() the original name allocation dt_idle_pd_alloc() kasprintf()s the full node path, then points pd->name at kbasename() of that string. dt_idle_pd_free() kfree()s pd->name, which is no longer the start of the allocation. Copy the basename instead.

Vector
CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

In the news

No ingested article mentions this CVE yet.