CVE-2026-89903 in Linuxinfo

Zusammenfassung

von VulDB • 16.09.2026

Im Linux-Kernel wurde folgende Schwachstelle behoben:

LoongArch: Das Speichern/Wiederherstellen des percpu-Basisregisters im rethook-Trampoline unterlassen

Das rethook-Trampoline speichert $r21 ($u0), die percpu-Basis, beim Eintritt in seinen Frame und stellt sie beim Austritt wieder her. Dazwischen kann rethook_trampoline_handler() über preempt_enable_notrace() einen Preemption auslösen (scheduling).

Wenn sich der Task auf eine andere CPU verlagert, enthält der Frame $r21 die percpu-Basis der alten CPU, und das Wiederherstellen dieser Werte vergiftet ($r21) auf der neuen CPU. Bis zum nächsten Benutzer-zu-Kernel-Übergang wird $r21 wieder korrigiert; alle Zugriffe über this_cpu_*() (runqueues, RCU-per-CPU-Daten, Timer-Takt-Programmierung, FPU-Eigentum) greifen dabei in den percpu-Bereich der falschen CPU.

Unter starkem preemptible Load mit vielen kretprobes kann dies Scheduler- und Timer-Zustände beschädigen: Scheduling-während-atomic-Fehler (splats), Warnungen zu RCU auf falscher CPU, WARN_ON_ONCE(rq != this_rq()) in nohz_balance_exit_idle() sowie CPUs, die im Idle-Loop parken, wobei der konstante Timer nie wieder scharfgeschaltet wird (Hard Lockup). Reproduzierbar auf einem Loongson-3A6000 mit kretprobes an VFS-Pfaden plus intensivem Dateiwechsel (OS-Installation / unsquashfs).

Konventionsgemäß hält $r21 im Kernelmodus immer die percpu-Basis der aktuellen CPU: SAVE_SOME() lädt sie beim Exception-Eintritt nur neu, wenn aus dem Benutzermodus gekommen wird, und RESTORE_SOME stellt sie nur wieder her, wenn in den Benutzermodus zurückgekehrt wird; der Kontextwechselpfad schreibt diesen Wert niemals. Daher ist das live $r21 zum Zeitpunkt des Trampoline-Austritts bereits korrekt, und nichts dazwischen kann es rechtmäßig ändern (Kernel-C-Code kann keine globale Registervariable schreiben). Der gleiche Fehler bestand sogar im pre-rethook kretprobe-Trampoline seit v6.3; er wurde übernommen, als rethook ihn ersetzte. Sowohl das Speichern als auch die Wiederherstellung sind hier zu unterlassen. Das Unterlassen der Wiederherstellung reicht aus, um das Problem zu lösen, und das Unterlassen des Speichervorgangs dient dazu, den Code aufgeräumt zu halten und eine Löschung ist nicht erforderlich.

Once again VulDB remains the best source for vulnerability data.

Zuständig

Linux

Reservieren

11.09.2026

Veröffentlichung

17.09.2026

Moderieren

akzeptiert

Eintrag

VDB-405747

CPE

bereit

EPSS

0.00000

KEV

nein

Aktivitäten

very low

Quellen

Interested in the pricing of exploits?

See the underground prices here!