{"id":33297,"date":"2026-10-06T20:31:42","date_gmt":"2026-10-06T12:31:42","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98228"},"modified":"2026-10-06T20:31:42","modified_gmt":"2026-10-06T12:31:42","slug":"cve-2026-98228","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98228","title":{"rendered":"CVE-2026-98228 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nmips: select CONFIG_W"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>mips: select CONFIG_WEAK_REORDERING_BEYOND_LLSC from CONFIG_EYEQ<\/p>\n<p>On I6500 CPU cores, lld and scd give no ordering guarantees (same as all<br \/>\nother instructions). To respect the assumption that arch_cmpxchg() is<br \/>\nfully ordered, we must inject sync instructions above and below our<br \/>\nlld\/scd loops using the already in place WEAK_REORDERING_BEYOND_LLSC<br \/>\ninfrastructure.<\/p>\n<p>Otherwise, bad things can happen:<\/p>\n<p>[   34.054496] CPU 3 Unable to handle kernel paging request at virtual address 0000000000000000, epc == a80000080838e01c, ra == a80000080838dfc4<br \/>\n[   34.054559] Oops[#1]:<br \/>\n[   34.069561] CPU: 3 UID: 0 PID: 170 Comm: pipe_race Not tainted 7.2.0-rc6-01553-gb73c35220968-dirty #103 VOLUNTARY<br \/>\n[   34.079932] Hardware name: Mobile EyeQ5 MP5 Evaluation board<br \/>\n[   34.085592] $ 0   : 0000000000000000 0000000000000001 0000000000000000 0000000000000000<br \/>\n[   34.093616] $ 4   : a800000808ee2618 000000000b7a879d 0000000000001000 0000000000000000<br \/>\n[   34.101638] $ 8   : 0000000000e3f2c9 0000000000000000 a800000808a2a9f8 0000000000000000<br \/>\n[   34.109660] $12   : a8000008139ffcd8 ffffffff84080018 a80000080837fae0 7878787878787878<br \/>\n[   34.117682] $16   : a800000807e82940 0000000000001000 0000000000000000 0000000000000000<br \/>\n[   34.125704] $20   : a800000802920e00 a8000008139ffdf8 a800000802649400 0000000000e3f2c9<br \/>\n[   34.133726] $24   : 0000000000000006 00000001200406e0<br \/>\n[   34.141783] $28   : a8000008139fc000 a8000008139ffd10 0000000000e3f2c8 a80000080838dfc4<br \/>\n[   34.149837] epc   : a80000080838e01c anon_pipe_read+0xd4\/0x428<br \/>\n[   34.155697] ra    : a80000080838dfc4 anon_pipe_read+0x7c\/0x428<br \/>\n[   34.161549] Status: 140000e3  KX SX UX KERNEL EXL IE<br \/>\n[   34.166551] Cause : 40800408 (ExcCode 02)<br \/>\n[   34.170574] BadVA : 0000000000000000<br \/>\n[   34.174161] PrId  : 0001b028 (MIPS I6500)<br \/>\n[   34.178183] Process pipe_race (pid: 170, threadinfo=000000005ca35720, task=00000000e1013890, tls=000000014ebbb780)<br \/>\n[   34.188568] Stack : a800000802649400 0000000000000000 0000000000000000 a8000008139ffdd0<br \/>\n[   34.196623]\t 0000000000000fba a800000808ee0000 0000000000000001 a8000008130c3e80<br \/>\n[   34.204676]\t a8000008080d1280 a8000008139ffd58 a8000008139ffd58 1dbd2b22ea1dd500<br \/>\n[   34.212729]\t a800000802649400 a800000808ee0000 ffffffffffffffea 0000000000000001<br \/>\n[   34.220783]\t 0000000000001000 0000000000000000 00000001200ae518 ffffffffffffffff<br \/>\n[   34.228836]\t 000000fffbe0e530 a80000080837edf4 000000fffbe0e530 0000000000000000<br \/>\n[   34.236890]\t 0000000000000000 0000000000000000 000000014ebb55a0 0000000000001000<br \/>\n[   34.244943]\t 0000000000000001 a800000802649400 0000000000000000 0000000000000000<br \/>\n[   34.252996]\t 0000000000000000 0000400400000000 0000000000000000 1dbd2b22ea1dd500<br \/>\n[   34.261049]\t 00000000140000e3 a800000802649400 a800000802649400 a800000808ee0000<br \/>\n[   34.269103]\t &#8230;<br \/>\n[   34.271568] Call Trace:<br \/>\n[   34.274026] [] anon_pipe_read+0xd4\/0x428<br \/>\n[   34.279533] [] vfs_read+0x25c\/0x318<br \/>\n[   34.284607] [] ksys_read+0x104\/0x138<br \/>\n[   34.289763] [] syscall_common+0x44\/0x68<br \/>\n[   34.295187]<br \/>\n[   34.296689] Code: f84000cf  02209825  de020010  d8400004  02002825  0040f809  02802025  f84000c3<br \/>\n[   34.306504]<br \/>\n[   34.308099] &#8212;[ end trace 0000000000000000 ]&#8212;<\/p>\n<p>My initial reproducer was the xdp-tools test suite. A standalone<br \/>\nreproducer would be an lld\/scd loop that, when the read is reordered by<br \/>\nthe CPU, triggers a fault. We can achieve this from userspace by<br \/>\nstressing an anonymous pipe, which uses a mutex. Program used:<\/p>\n<p>\t\/\/ SPDX-License-Identifier: GPL-2.0<br \/>\n\t\/\/ pipe_race.c &#8211; reproducer for MIPS LL\/SC reordering vs fs\/pipe.c<br \/>\n\t\/\/<br \/>\n\t\/\/ Two userspace processes on an anonymous pipe:<br \/>\n\t\/\/   parent  = writer: tight write() loop<br \/>\n\t\/\/   child   = reader: tight read() loop<\/p>\n<p>\t#define _GNU_SOURCE<br \/>\n\t#include<br \/>\n\t#include<br \/>\n\t#include<br \/>\n\t#include<br \/>\n\t#include<br \/>\n\t#include<br \/>\n\t#include<br \/>\n\t#include<br \/>\n\t#include<br \/>\n&#8212;truncated&#8212;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>mips: select CONFIG_WEAK_REORDERING_BEYOND_LLSC from CONFIG_EYEQ<\/p>\n<p>On I6500 CPU cores, lld and scd give no ordering guarantees (same<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-33297","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/33297","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=33297"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=33297"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=33297"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}