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

MIPS: DEC: Ensure 32-bit stack location for o32 prom_printf()

In 64-bit configurations calling any firmware entry points from a kernel
thread other than the initial one will result in a situation where the
stack has been placed in the XKPHYS 64-bit memory segment.

Consequently the stack pointer is no longer a 32-bit value and when the
32-bit firmware code called uses 32-bit ALU operations to manipulate the
stack pointer, the calculated result is incorrect (in fact in the 64-bit
MIPS ISA almost all 32-bit ALU operations will produce an unpredictable
result when executed on 64-bit data) and control goes astray.

This may happen when no final console driver has been enabled in the
configuration and consequently the initial console continues being used
late into bootstrap, or with an upcoming change that will switch the zs
driver to use a platform device, which in turn will make the console
handover happen only after other kernel threads have already been
started, and the kernel will hang at:

pid_max: default: 32768 minimum: 301

or somewhat later, but always before:

cblist_init_generic: Setting adjustable number of callback queues.

has been printed.

It seems that only the prom_printf() entry point is affected. Of all
the other entry points wired only rex_slot_address() and rex_gettcinfo()
are called from a kernel thread other than the initial one, specifically
kernel_init(), and they are leaf functions that do no business with the
stack, having worked with no issue ever since 64-bit support was added
for the platform back in 2002.

To address this issue then, arrange for the stack to be switched in the
o32 wrapper as required for prom_printf() only, by supplying call_o32()
with a pointer to a chunk of initdata space, which is placed in the
CKSEG0 32-bit compatibility segment, observing that prom_printf() is
only called from console output handler and therefore with the console
lock held, implying no need for this code to be reentrant.

Other firmware entry points may be called with interrupts enabled and no
lock held, and may therefore require that call_o32() be reentrant. They
trigger no issue at this point and "if it ain't broke, don't fix it," so
just leave them alone.
Published: 2026-08-15
Score: 5.5 Medium
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

A flaw in MIPS DEC firmware entry points causes the kernel to place the stack in a 64‑bit address region while the firmware code assumes a 32‑bit stack pointer. The 32‑bit firmware uses single‑word ALU operations on a 64‑bit value, producing unpredictable results that corrupt control flow. The result is a hard kernel panic during early boot, typically after the console output handler is invoked, with the kernel stopping around a console max‑pid calculation or later. This constitutes a denial‑of‑service impact, rendering the system unresponsive during bootstrap. This is a misuse of operand size leading to incorrect calculation (CWE‑681).

Affected Systems

All Linux kernel builds for MIPS architectures that enable 64‑bit support and invoke the prom_printf() firmware entry point from a kernel thread other than the initial one. The issue is present across all vendors that ship the Linux kernel on MIPS devices, regardless of specific distribution, as the affected code is part of the upstream kernel sources. All kernel versions before the commit that introduces stack‑segment switching are vulnerable; specific affected revisions are listed in the associated patch links.

Risk and Exploitability

The CVSS score is 5.5. The vulnerability can cause a system‑wide boot failure, so it should be treated as medium severity. Because the flaw is exercised only by internal kernel code during early boot, an attacker would need privileged access to the kernel source or firmware to influence its behaviour, which is unlikely in a production environment. The EPSS score is 0.0021, and the vulnerability is not listed in CISA’s KEV catalog, indicating no widespread exploitation has been publicly confirmed. Nonetheless, if an attacker can supply malicious firmware or modify the device’s boot sequence, they could leverage this bug to deny service to the target system.

Generated by OpenCVE AI on August 22, 2026 at 09:00 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Apply a kernel update that contains the patch which ensures the stack pointer is switched to the CKSEG0 32‑bit compatibility segment for prom_printf() calls. The commit referenced in the advisory is the definitive solution.
  • If a kernel upgrade is not immediately possible, configure the system to avoid using prom_printf() from non‑initial kernel threads—for example, disable sourcing the console driver that triggers prom_printf() during early boot. This is a temporary mitigation and may affect console output. If console output is crucial, consider restricting the console driver lifecycle until after kernel initialisation.
  • After applying the fix or workaround, reboot the system to verify that the kernel no longer hangs during the initial boot sequence and that console output behaves normally.

Generated by OpenCVE AI on August 22, 2026 at 09:00 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Wed, 19 Aug 2026 00:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-681
References
Metrics threat_severity

None

cvssV3_1

{'score': 5.5, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H'}

threat_severity

Moderate


Sat, 15 Aug 2026 06:00:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: MIPS: DEC: Ensure 32-bit stack location for o32 prom_printf() In 64-bit configurations calling any firmware entry points from a kernel thread other than the initial one will result in a situation where the stack has been placed in the XKPHYS 64-bit memory segment. Consequently the stack pointer is no longer a 32-bit value and when the 32-bit firmware code called uses 32-bit ALU operations to manipulate the stack pointer, the calculated result is incorrect (in fact in the 64-bit MIPS ISA almost all 32-bit ALU operations will produce an unpredictable result when executed on 64-bit data) and control goes astray. This may happen when no final console driver has been enabled in the configuration and consequently the initial console continues being used late into bootstrap, or with an upcoming change that will switch the zs driver to use a platform device, which in turn will make the console handover happen only after other kernel threads have already been started, and the kernel will hang at: pid_max: default: 32768 minimum: 301 or somewhat later, but always before: cblist_init_generic: Setting adjustable number of callback queues. has been printed. It seems that only the prom_printf() entry point is affected. Of all the other entry points wired only rex_slot_address() and rex_gettcinfo() are called from a kernel thread other than the initial one, specifically kernel_init(), and they are leaf functions that do no business with the stack, having worked with no issue ever since 64-bit support was added for the platform back in 2002. To address this issue then, arrange for the stack to be switched in the o32 wrapper as required for prom_printf() only, by supplying call_o32() with a pointer to a chunk of initdata space, which is placed in the CKSEG0 32-bit compatibility segment, observing that prom_printf() is only called from console output handler and therefore with the console lock held, implying no need for this code to be reentrant. Other firmware entry points may be called with interrupts enabled and no lock held, and may therefore require that call_o32() be reentrant. They trigger no issue at this point and "if it ain't broke, don't fix it," so just leave them alone.
Title MIPS: DEC: Ensure 32-bit stack location for o32 prom_printf()
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-08-17T05:10:29.923Z

Reserved: 2026-08-09T03:40:39.912Z

Link: CVE-2026-72215

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-08-15T06:21:40.233

Modified: 2026-08-17T06:18:22.470

Link: CVE-2026-72215

cve-icon Redhat

Severity : Moderate

Publid Date: 2026-08-15T00:00:00Z

Links: CVE-2026-72215 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-08-22T09:15:04Z

Weaknesses
  • CWE-681

    Incorrect Conversion between Numeric Types