---
id: CVE-2026-97905
title: |-
  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
summary: |-
  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, unlik…
severity: none
vendor: Linux
product: Linux
affected:
  - >-
    Linux >= 2fc3384dc75bf7333384c7a16d12c796f61c3f56 <
    0de2f3918fbbbb767e7e716178194b66560dd12a
  - >-
    Linux >= 2fc3384dc75bf7333384c7a16d12c796f61c3f56 <
    6e166b9281dec98aed19213a84235250e5fdb081
  - >-
    Linux >= 2fc3384dc75bf7333384c7a16d12c796f61c3f56 <
    bbc0472d2270bf732142ca71579d6ede636174ed
  - >-
    Linux >= 2fc3384dc75bf7333384c7a16d12c796f61c3f56 <
    54d37bcf2f497140b9207968557ddb484058e749
  - Linux 4.2
published: '2026-09-25'
updated: '2026-09-25'
sourceUpdated: '2026-09-25T11:17:17.403'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2026-97905'
references:
  - url: 'https://git.kernel.org/stable/c/0de2f3918fbbbb767e7e716178194b66560dd12a'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/54d37bcf2f497140b9207968557ddb484058e749'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/6e166b9281dec98aed19213a84235250e5fdb081'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/bbc0472d2270bf732142ca71579d6ede636174ed'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
tags:
  - nvd
  - cve.org
ingestedAt: '2026-09-25T11:06:38.894Z'
---

## Overview

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.

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
