CVE-2026-89459
Received Received - Intake

s390/percpu MVIY_PERCPU Macro Handling Flaw in Linux Kernel

Vulnerability report for CVE-2026-89459, including description, CVSS score, EPSS score, affected products, exploitability, helpful resources, and attack-flow context.

Publication date: 2026-09-11

Last updated on: 2026-09-11

Assigner: kernel.org

Description

In the Linux kernel, the following vulnerability has been resolved: s390/percpu: Fix MVIY_PERCPU() with older binutils Commit a737737cdb9c ("s390/percpu: Infrastructure for more efficient this_cpu operations") introduced MVIY_PERCPU(), which stringifies arguments that are already C string literals. This generates an assembler macro invocation with whitespace-separated quoted arguments: GEN_MVIY "459712" "%r3" GNU as versions prior to binutils 2.39 drop the separating whitespace between quoted macro arguments during input scrubbing. They consequently parse the invocation as a single argument and emit repeated warnings: Warning: missing closing `"' The .ifc in GEN_MVIY never matches and GNU as exits successfully without emitting the mviy instruction. As a result, the interrupted per-CPU sequence is not marked in lowcore and the exception return path cannot repair the per-CPU address register after migration. All MVIY_PERCPU() callers pass C string literals. Use them directly and separate the assembler macro arguments with an explicit comma. The resulting invocation is: GEN_MVIY 459712, %r3 This form is unambiguous for GNU as and LLVM's integrated assembler. This behavior was fixed in GNU as from binutils 2.39, but Linux supports binutils 2.30.

CVSS Scores

EPSS Scores

Probability:
Percentile:

Meta Information

Published
2026-09-11
Last Modified
2026-09-11
Generated
2026-09-12
AI Q&A
2026-09-12
EPSS Evaluated
N/A
NVD
EUVD

Affected Vendors & Products

Showing 2 associated CPEs
Vendor Product Version / Range
gnu binutils to 2.39 (inc)
gnu binutils From 2.30 (exc)

Helpful Resources

Exploitability

CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-UNKNOWN

Attack-Flow Graph

AI Quick Actions

Instant insights powered by AI
Executive Summary

This vulnerability affects the Linux kernel's s390/percpu module. It involves incorrect handling of stringified arguments in the MVIY_PERCPU() macro when using older versions of GNU assembler (binutils before 2.39). This causes the assembler to fail parsing the macro invocation, leading to a missing per-CPU sequence marker in lowcore and potential failure in exception return path repair after CPU migration.

Detection Guidance

This vulnerability is specific to the Linux kernel's s390/percpu implementation and is related to binutils version compatibility. Detection requires checking the kernel version and binutils version on your system. Use commands like 'uname -a' to check the kernel version and 'as --version' to check binutils version. If your system uses binutils older than 2.39, it may be affected.

Impact Analysis

The vulnerability could cause system instability or crashes during CPU migration events on s390x (IBM Z) systems running Linux kernels with affected binutils versions. It may lead to improper handling of per-CPU data, potentially causing data corruption or kernel panics in scenarios involving CPU switching.

Mitigation Strategies

Upgrade binutils to version 2.39 or later to resolve the issue. If upgrading is not immediately possible, apply the Linux kernel patch that fixes the MVIY_PERCPU() macro usage. Monitor for kernel warnings related to assembler macro invocations or missing closing quotes.

Chat Assistant

Ask questions about this CVE
Hi! I’m here to help you understand CVE-2026-89459. Ask me anything about the vulnerability, its impact, or mitigation strategies.
0/70

EPSS Chart