CVEvulnerability
CVE-2026-97905
- Status
- Received
- Published
- 2026-09-25
- Last modified
- 2026-10-19
- Assigner
- 416baaa9-dc9f-4396-8d5f-8c081fb06d67
Description
In the Linux kernel, the following vulnerability has been resolved:
cpufreq: zero-initialize policy cpumask before sysfs publication
cpufreq_policy_alloc() allocates policy->cpus with alloc_cpumask_var(),
i.e. without __GFP_ZERO, unlike the sibling related_cpus and real_cpus
masks. With CONFIG_CPUMASK_OFFSTACK=y the mask is a separate
kmalloc_node() allocation, so its bitmap holds whatever the slab allocator
left behind:
cpufreq_online()
cpufreq_policy_alloc()
alloc_cpumask_var(&policy->cpus) /* bitmap is uninitialized */
kobject_init_and_add() /* policy%u/ appears in sysfs */
cpufreq_policy_online()
cpumask_copy(policy->cpus, cpumask_of(cpu)) /* first valid value */
This leaves a window in which the sysfs attributes are already reachable
while policy->cpus is still garbage. show()/store() gate on
policy_is_inactive(), i.e. cpumask_empty(policy->cpus), so a non-zero
bitmap makes them run the attribute callbacks on a policy that is not
initialized yet.
Fix this by using zalloc_cpumask_var() for policy->cpus.
References
- https://git.kernel.org/stable/c/06f273d29e5e0fe5c775a65c563fbeed8cd94c7a git.kernel.org
- https://git.kernel.org/stable/c/0de2f3918fbbbb767e7e716178194b66560dd12a git.kernel.org
- https://git.kernel.org/stable/c/54d37bcf2f497140b9207968557ddb484058e749 git.kernel.org
- https://git.kernel.org/stable/c/6e166b9281dec98aed19213a84235250e5fdb081 git.kernel.org
- https://git.kernel.org/stable/c/bbc0472d2270bf732142ca71579d6ede636174ed git.kernel.org
- https://git.kernel.org/stable/c/ca52482508b3ac9febe74ca4f732647d394727b8 git.kernel.org
- https://git.kernel.org/stable/c/e13370c5b549712f49f80234df249303381c53b4 git.kernel.org
- https://git.kernel.org/stable/c/e807920031ca32b668f9e7a1efbd21858f03d64b git.kernel.org