All vulnerabilities
CVE-2026-97905

Linux: cpufreq: zero-initialize policy cpumask before sysfs publication

Linux LinuxOperating systems
CVSS
NoneNot scored
ExploitationNo known exploitationNot in CISA KEV, which does not prove it is unexploitedCISA KEV
Exploit odds (EPSS)0.21%Chance of exploitation activity in the next 30 days, higher than 10% of CVEs. Scored 23 Oct 2026FIRST EPSS
Fixed in06f273d29e5e0fe5c775a65c563fbeed8cd94c7aAlso 0de2f3918fbbbb767e7e716178194b66560dd12a, 6e166b9281dec98aed19213a84235250e5fdb081 and 1 moreCVE List
Published25 Sep 2026Updated 19 Oct 2026CVE List

What fixes it

  • 06f273d29e5e0fe5c775a65c563fbeed8cd94c7aLinuxCVE List
  • 0de2f3918fbbbb767e7e716178194b66560dd12aLinuxCVE List
  • 6e166b9281dec98aed19213a84235250e5fdb081LinuxCVE List
  • 54d37bcf2f497140b9207968557ddb484058e749LinuxCVE List

A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.

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.

Text from CVE List

Affected versions 18

  • Linuxaffected: 2fc3384dc75bf7333384c7a16d12c796f61c3f56 before e13370c5b549712f49f80234df249303381c53b4CVE List
  • Linuxaffected: 2fc3384dc75bf7333384c7a16d12c796f61c3f56 before e807920031ca32b668f9e7a1efbd21858f03d64bCVE List
  • Linuxaffected: 2fc3384dc75bf7333384c7a16d12c796f61c3f56 before ca52482508b3ac9febe74ca4f732647d394727b8CVE List
  • Linuxaffected: 2fc3384dc75bf7333384c7a16d12c796f61c3f56 before 06f273d29e5e0fe5c775a65c563fbeed8cd94c7aCVE List
  • Linuxaffected: 2fc3384dc75bf7333384c7a16d12c796f61c3f56 before 0de2f3918fbbbb767e7e716178194b66560dd12aCVE List
  • Linuxaffected: 2fc3384dc75bf7333384c7a16d12c796f61c3f56 before 6e166b9281dec98aed19213a84235250e5fdb081CVE List
  • Linuxaffected: 2fc3384dc75bf7333384c7a16d12c796f61c3f56 before bbc0472d2270bf732142ca71579d6ede636174edCVE List
  • Linuxaffected: 2fc3384dc75bf7333384c7a16d12c796f61c3f56 before 54d37bcf2f497140b9207968557ddb484058e749CVE List
  • Linuxaffected: 4.2CVE List
  • Linuxunaffected: all versions before 4.2CVE List
  • Linuxunaffected: 5.10.271 through 5.10.*CVE List
  • Linuxunaffected: 5.15.222 through 5.15.*CVE List
  • Linuxunaffected: 6.1.189 through 6.1.*CVE List
  • Linuxunaffected: 6.6.158 through 6.6.*CVE List
  • Linuxunaffected: 6.12.111 through 6.12.*CVE List
  • Linuxunaffected: 6.18.53 through 6.18.*CVE List
  • Linuxunaffected: 7.2.7 through 7.2.*CVE List
  • Linuxunaffected: 7.3CVE List

References 8