CVE-2026-98228
>_ Opis
Tłumaczenie automatyczne – może zawierać nieścisłości.
W jądrze Linuksa usunięto następującą lukę:
mips: wybierz CONFIG_WEAK_REORDERING_BEYOND_LLSC z CONFIG_EYEQ
W przypadku rdzeni procesora I6500 lld i scd nie dają żadnych gwarancji zamówienia (tak samo jak wszystkie
inne instrukcje). Aby szanować założenie, że arch_cmpxchg() jest
w pełni uporządkowane, musimy wprowadzić instrukcje synchronizacji powyżej i poniżej naszych
lld/scd pętle wykorzystujące już istniejące WEAK_REORDERING_BEYOND_LLSC
infrastruktura.
W przeciwnym razie mogą wydarzyć się złe rzeczy:
[ 34.054496] CPU 3 Nie można obsłużyć żądania stronicowania jądra pod adresem wirtualnym 0000000000000000, epc == a80000080838e01c, ra == a80000080838dfc4
[34.054559] Ups[#1]:
[34.069561] Procesor: 3 UID: 0 PID: 170 Comm: pipe_race Nieskażony 7.2.0-rc6-01553-gb73c35220968-dirty #103 DOBROWOLNE
[ 34.079932] Nazwa sprzętu: Płyta ewaluacyjna Mobile EyeQ5 MP5
[ 34.085592] $ 0 : 0000000000000000 0000000000000001 000000000000000 00000000000000000
[ 34.093616] 4 $ : a800000808ee2618 000000000b7a879d 0000000000001000 0000000000000000
[ 34.101638] 8 $ : 0000000000e3f2c9 000000000000000 a800000808a2a9f8 00000000000000000
[ 34.109660] 12 $ : a8000008139ffcd8 ffffffff84080018 a80000080837fae0 7878787878787878
[ 34.117682] 16 USD : a800000807e82940 0000000000001000 0000000000000000 0000000000000000
[ 34.125704] 20 $ : a800000802920e00 a8000008139ffdf8 a800000802649400 0000000000e3f2c9
[ 34.133726] 24 $ : 0000000000000006 00000001200406e0
[ 34.141783] 28 USD : a8000008139fc000 a8000008139ffd10 0000000000e3f2c8 a80000080838dfc4
[34.149837] EPC: a80000080838e01c anon_pipe_read+0xd4/0x428
[ 34.155697] ra : a80000080838dfc4 anon_pipe_read+0x7c/0x428
[ 34.161549] Stan: 140000e3 KX SX UX JĄDRO EXL IE
[34.166551] Przyczyna: 40800408 (ExcCode 02)
[34.170574] BadVA: 0000000000000000
[34.174161] PrId: 0001b028 (MIPS I6500)
[ 34.178183] Proces pipe_race (pid: 170, threadinfo=000000005ca35720, task=00000000e1013890, tls=000000014ebbb780)
[ 34.188568] Stos : a800000802649400 0000000000000000 0000000000000000 a8000008139ffdd0
[ 34.196623] 0000000000000fba a800000808ee0000 0000000000000001 a8000008130c3e80
[ 34.204676] a8000008080d1280 a8000008139ffd58 a8000008139ffd58 1dbd2b22ea1dd500
[ 34.212729] a800000802649400 a800000808ee0000 ffffffffffffffffea 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] Śledzenie połączeń:
[ 34.274026] [<a80000080838e01c>] anon_pipe_read+0xd4/0x428
[ 34.279533] [<a80000080837edf4>] vfs_read+0x25c/0x318
[ 34.284607] [<a80000080837faac>] ksys_read+0x104/0x138
[ 34.289763] [<a80000080802b9cc>] syscall_common+0x44/0x68
[ 34.295187]
[ 34.296689] Kod: f84000cf 02209825 de020010 <dc420000> d8400004 02002825 0040f809 02802025 f84000c3
[ 34.306504]
[ 34.308099] ---[ ślad końcowy 0000000000000000 ]---
Moim pierwszym reproduktorem był zestaw testowy xdp-tools. Samodzielny
reproduktor byłby pętlą lld/scd, która po zmianie kolejności odczytu
procesora, powoduje błąd. Możemy to osiągnąć z przestrzeni użytkownika poprzez
podkreślając anonimowy potok, który używa muteksu. Wykorzystany program:
// Identyfikator licencji SPDX: GPL-2.0
// pipe_race.c - odtwarzacz do zmiany kolejności MIPS LL/SC w porównaniu do fs/pipe.c
//
// Dwa procesy przestrzeni użytkownika na anonimowym potoku:
// rodzic = pisarz: ścisła pętla write().
// dziecko = czytelnik: ciasna pętla read().
#zdefiniuj _GNU_SOURCE
#include <assert.h>
#include <errno.h>
#include <sched.h>
#include <sygnał.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#uwzględnij
---obcięty---
>_ Referencje
Dane podatności pochodzą z oficjalnych źródeł (CVE® List / NVD). Opisy po polsku są tłumaczone automatycznie i mogą zawierać nieścisłości – na stronie rekordu można wyświetlić wersję angielską.
This product uses the NVD API but is not endorsed or certified by the NVD.
Copyright © 1999–2026, The MITRE Corporation. CVE is a registered trademark and the CVE logo is a registered trademark of The MITRE Corporation.
CVE Usage: MITRE hereby grants you a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Common Vulnerabilities and Exposures (CVE®). Any copy you make for such purposes is authorized provided that you reproduce MITRE's copyright designation and this license in any such copy. ALL DOCUMENTS AND THE INFORMATION CONTAINED THEREIN PROVIDED BY MITRE ARE PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND.
NVD Terms of Use / CVE® Terms of Use / nvd.nist.gov / cve.org