CVE-2022-50473
Description
An initialization order bug was found in the Linux kernel's cpufreq subsystem during policy allocation. A local user can trigger this issue when CPU frequency policy initialization fails after kobject registration but before completion initialization, causing the cleanup path to attempt to use an uninitialized completion variable. This results in a page fault and kernel crash, leading to denial of service.
Statement
The cpufreq_policy_alloc function creates CPU frequency policy objects and registers them with the sysfs kobject infrastructure. During this process, a completion variable is used for synchronization when the policy object is eventually released. The problem is timing: kobject_init_and_add can fail, triggering an error cleanup path that calls kobject_put. This leads to cpufreq_sysfs_release being invoked, which tries to complete on the completion variable—but that variable hasn't been initialized yet because init_completion is called after the kobject registration. Accessing an uninitialized completion causes the kernel to dereference invalid memory (specifically address 0xfffffffffffffff8), resulting in an immediate page fault and crash. This can happen during normal CPU frequency driver initialization when any of various failure conditions occur, such as memory allocation failures or sysfs registration conflicts.
Common Vulnerability Scoring System (CVSS) Score Details
Info alert:Important note
CVSS scores for open source components depend on vendor-specific factors (e.g. version or build chain). Therefore, Red Hat's score and impact rating can be different from NVD and other vendors. Red Hat remains the authoritative CVE Naming Authority (CNA) source for its products and services (see Red Hat classifications).
CVSS v3 Score Breakdown
| Red Hat | NVD | cve.org | |
|---|---|---|---|
| Base Score | 5.5 | 5.5 | N/A |
| Attack Vector | Local | Local | N/A |
| Attack Complexity | Low | Low | N/A |
| Privileges Required | Low | Low | N/A |
| User Interaction | None | None | N/A |
| Scope | Unchanged | Unchanged | N/A |
| Confidentiality | None | None | N/A |
| Integrity Impact | None | None | N/A |
| Availability Impact | High | High | N/A |
Vector
Red Hat: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
NVD: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
Understanding the Weakness (CWE)
Confidentiality
Technical Impact: Read Memory; Read Application Data
When reusing a resource such as memory or a program variable, the original contents of that resource may not be cleared before it is sent to an untrusted party.
Availability
Technical Impact: DoS: Crash, Exit, or Restart
The uninitialized resource may contain values that cause program flow to change in ways that the programmer did not intend.
Frequently Asked Questions
Not sure what something means? Check out our Security Glossary.
Want to get errata notifications? Sign up here.