CVE-2026-98228: mips: select CONFIG_WEAK_REORDERING_BEYOND_LLSC from CONFIG_EYEQ

Published Oct 6, 2026
·
Updated

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

mips: select CONFIGWEAKREORDERINGBEYONDLLSC from CONFIGEYEQ

On I6500 CPU cores, lld and scd give no ordering guarantees (same as all other instructions). To respect the assumption that archcmpxchg() is fully ordered, we must inject sync instructions above and below our lld/scd loops using the already in place WEAKREORDERINGBEYONDLLSC infrastructure.

Otherwise, bad things can happen:

[ 34.054496] CPU 3 Unable to handle kernel paging request at virtual address 0000000000000000, epc == a80000080838e01c, ra == a80000080838dfc4 [ 34.054559] Oops[#1]: [ 34.069561] CPU: 3 UID: 0 PID: 170 Comm: piperace Not tainted 7.2.0-rc6-01553-gb73c35220968-dirty #103 VOLUNTARY [ 34.079932] Hardware name: Mobile EyeQ5 MP5 Evaluation board [ 34.085592] $ 0 : 0000000000000000 0000000000000001 0000000000000000 0000000000000000 [ 34.093616] $ 4 : a800000808ee2618 000000000b7a879d 0000000000001000 0000000000000000 [ 34.101638] $ 8 : 0000000000e3f2c9 0000000000000000 a800000808a2a9f8 0000000000000000 [ 34.109660] $12 : a8000008139ffcd8 ffffffff84080018 a80000080837fae0 7878787878787878 [ 34.117682] $16 : a800000807e82940 0000000000001000 0000000000000000 0000000000000000 [ 34.125704] $20 : a800000802920e00 a8000008139ffdf8 a800000802649400 0000000000e3f2c9 [ 34.133726] $24 : 0000000000000006 00000001200406e0 [ 34.141783] $28 : a8000008139fc000 a8000008139ffd10 0000000000e3f2c8 a80000080838dfc4 [ 34.149837] epc : a80000080838e01c anonpiperead+0xd4/0x428 [ 34.155697] ra : a80000080838dfc4 anonpiperead+0x7c/0x428 [ 34.161549] Status: 140000e3 KX SX UX KERNEL EXL IE [ 34.166551] Cause : 40800408 (ExcCode 02) [ 34.170574] BadVA : 0000000000000000 [ 34.174161] PrId : 0001b028 (MIPS I6500) [ 34.178183] Process piperace (pid: 170, threadinfo=000000005ca35720, task=00000000e1013890, tls=000000014ebbb780) [ 34.188568] Stack : a800000802649400 0000000000000000 0000000000000000 a8000008139ffdd0 [ 34.196623] 0000000000000fba a800000808ee0000 0000000000000001 a8000008130c3e80 [ 34.204676] a8000008080d1280 a8000008139ffd58 a8000008139ffd58 1dbd2b22ea1dd500 [ 34.212729] a800000802649400 a800000808ee0000 ffffffffffffffea 0000000000000001 [ 34.220783] 0000000000001000 0000000000000000 00000001200ae518 ffffffffffffffff [ 34.228836] 000000fffbe0e530 a80000080837edf4 000000fffbe0e530 0000000000000000 [ 34.236890] 0000000000000000 0000000000000000 000000014ebb55a0 0000000000001000 [ 34.244943] 0000000000000001 a800000802649400 0000000000000000 0000000000000000 [ 34.252996] 0000000000000000 0000400400000000 0000000000000000 1dbd2b22ea1dd500 [ 34.261049] 00000000140000e3 a800000802649400 a800000802649400 a800000808ee0000 [ 34.269103] ... [ 34.271568] Call Trace: [ 34.274026] [<a80000080838e01c>] anonpiperead+0xd4/0x428 [ 34.279533] [<a80000080837edf4>] vfsread+0x25c/0x318 [ 34.284607] [<a80000080837faac>] ksysread+0x104/0x138 [ 34.289763] [<a80000080802b9cc>] syscallcommon+0x44/0x68 [ 34.295187] [ 34.296689] Code: f84000cf 02209825 de020010 <dc420000> d8400004 02002825 0040f809 02802025 f84000c3 [ 34.306504] [ 34.308099] ---[ end trace 0000000000000000 ]---

My initial reproducer was the xdp-tools test suite. A standalone reproducer would be an lld/scd loop that, when the read is reordered by the CPU, triggers a fault. We can achieve this from userspace by stressing an anonymous pipe, which uses a mutex. Program used:

// SPDX-License-Identifier: GPL-2.0 // piperace.c - reproducer for MIPS LL/SC reordering vs fs/pipe.c // // Two userspace processes on an anonymous pipe: // parent = writer: tight write() loop // child = reader: tight read() loop

#define GNUSOURCE #include <assert.h> #include <errno.h> #include <sched.h> #include <signal.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types.h> #include ---truncated---

Affected Software

1 affected component
Linux Linux kernel

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Configuration

    Select CONFIG_WEAK_REORDERING_BEYOND_LLSC from CONFIG_EYEQ and inject fully ordered sync instructions above and below the lld/scd loops.

    MIPS kernel configuration CONFIG_WEAK_REORDERING_BEYOND_LLSC = enabled

Event History

Oct 6, 2026
CVE Published
via MITRE·08:45 AM
Data Sourced
via MITRE·08:45 AM
DescriptionSeverity
Data Sourced
via NVD·09:18 AM
DescriptionSeverity

Frequently Asked Questions

1

Which systems are most likely affected?

The issue is described for Linux systems using EyeQ configuration on I6500 CPU cores, including the Mobile EyeQ5 MP5 Evaluation board shown in the reported failure.

2

What level of access does an attacker need?

The CVSS vector indicates local access with low privileges is required, and no user interaction is needed. It is not described as remotely exploitable.

3

What is the potential impact?

The reported behavior includes a kernel paging-request failure and kernel oops caused by insufficient ordering around lld/scd loops. The CVSS assessment rates confidentiality, integrity, and availability impact as high.

4

How can I check whether the fix is present?

Check whether the kernel source or stable backports include either referenced commit: 3f017c2ca8c31a1e135dd87be647096866d6b196 or bbc448c541ed90d52f9ec22f17394304e3bf170e. The fix makes CONFIG_EYEQ select CONFIG_WEAK_REORDERING_BEYOND_LLSC.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203