CVE-2026-80751 in Linuxinfo

Summary

by MITRE • 09/03/2026

In the Linux kernel, the following vulnerability has been resolved:

pmdomain: mediatek: mfg: initialize prev_o in mtk_mfg_attach_dev()

mtk_mfg_attach_dev() reads prev_o on the first iteration of its loop, in "if (prev_o && prev_o->freq == o->freq)", before prev_o is assigned at the end of the loop body. On that first iteration, evaluating prev_o reads an indeterminate value. If it is non-NULL, the condition dereferences a stale or invalid pointer, potentially faulting or incorrectly skipping the first OPP.

Initialize prev_o to NULL. This matches the intent as well: there is no previous OPP to compare against on the first iteration.

Found with Clang's -Wconditional-uninitialized.

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

Analysis

by VulDB Data Team • 09/03/2026

The vulnerability identified in the Linux kernel involves an uninitialized variable usage within the MediaTek power domain management driver, specifically in the mtk_mfg_attach_dev function. This issue arises from a logic error where the code attempts to compare current operating performance points against previous ones without properly initializing the pointer that tracks the prior state. The root cause is a failure to initialize the prev_o pointer before its first use within a loop structure. In C programming, local variables are not automatically zeroed out or set to null unless explicitly assigned during declaration or at the start of their scope. Consequently, when mtk_mfg_attach_dev executes for the first time, it reads from memory locations that may contain arbitrary data left over by previous function calls or stack operations. This constitutes a classic uninitialized variable vulnerability which can lead to unpredictable behavior depending on the runtime environment and compiler optimizations.

From a technical perspective, the flaw manifests during the initial iteration of the loop where the condition checks if prev_o is non-null and if its frequency matches the current operating point o->freq. Since prev_o has not been assigned yet in this first pass, it holds an indeterminate value. If that random memory content happens to be interpreted as a valid pointer address rather than null, the subsequent dereference of prev_o will occur. This can result in accessing invalid memory regions, leading to kernel panics or system crashes due to segmentation faults. Alternatively, if the garbage value coincidentally points to a struct with similar layout but different data, it might cause incorrect logic execution, such as skipping necessary power state transitions or applying wrong voltage levels. Such errors compromise the stability and reliability of the device's power management subsystem, which is critical for maintaining system integrity under varying load conditions.

The operational impact of this vulnerability extends beyond immediate crashes to potential security implications related to availability and potentially confidentiality if memory corruption occurs. An attacker who can trigger specific sequences that exercise this code path might induce a denial-of-service condition by causing the kernel to fault. Furthermore, in more complex scenarios involving use-after-free or out-of-bounds reads triggered by such uninitialized pointers, there could be risks of information disclosure where sensitive kernel data is leaked into user space through error messages or crash dumps. The vulnerability aligns with CWE-457, which describes the use of an uninitialized variable, and falls under the broader category of improper input validation since the code fails to ensure that internal state variables are in a known safe state before being used for decision-making logic.

Mitigation strategies primarily involve ensuring strict initialization practices within kernel development workflows. The immediate fix requires setting prev_o to NULL at the beginning of mtk_mfg_attach_dev, thereby guaranteeing that the first iteration correctly identifies there is no previous operating point to compare against. This aligns with defensive programming principles where variables are always initialized before use regardless of control flow assumptions. To prevent similar issues in the future, developers should leverage static analysis tools like Clang's -Wconditional-uninitialized warning flag during compilation. Integrating such checks into continuous integration pipelines helps catch these logical errors early. Additionally, adhering to coding standards that mandate explicit initialization and using compiler flags for enhanced security can significantly reduce the attack surface associated with uninitialized memory access vulnerabilities in low-level system software.

Responsible

Linux

Reservation

08/26/2026

Disclosure

09/03/2026

Moderation

accepted

CPE

ready

EPSS

0.00154

KEV

no

Activities

very low

Sources

Do you want to use VulDB in your project?

Use the official API to access entries easily!