CVE-2026-89798 in Linux
Zusammenfassung
von VulDB • 16.09.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
rpcrdma: rn_done vor der Veröffentlichung der Benachrichtigung aktivieren (arm)
rpcrdma_rn_register() fügt @rn mit xa_alloc() in rd_xa ein, bevor es den Callback des Aufrufers in rn->rn_done speichert. Der xarray macht @rn für rpcrdma_remove_one() erreichbar, das über rd_xa iteriert und rn->rn_done(rn) für jede registrierte Benachrichtigung aufruft. Ein Geräte-Entfernungsprozess, der mit einer neuen Registrierung konkurriert (Race Condition), kann daher @rn mit einem noch NULLen rn_done beobachten, da die Benachrichtigungsobjekte von ihren Besitzern null-allokiert werden und somit über einen NULL-Funktionszeiger aufgerufen wird.
Speichern Sie rn->rn_done vor xa_alloc(), um @rn zu veröffentlichen. Die Speicher-Seiten- und Lade-Seiten-Reihenfolge des xarray garantiert dann, dass jede CPU, die @rn in rd_xa findet, auch den aktivierten Callback beobachtet.
rpcrdma_rn_unregister() behandelt ein nicht-NULL rn_done als Sentinel für eine abgeschlossene Registrierung; daher darf der frühe Speicher bei einer fehlgeschlagenen Registrierung nicht fortbestehen. Löschen Sie rn_done erneut, wenn xa_alloc() fehlschlägt. Wäre es gesetzt gelassen, würde die Cleanup-Pfad-Routine für den gescheiterten Accept rpcrdma_rn_unregister() auf einem @rn aufrufen, das nie eingefügt wurde, wodurch ein unverbundener rd_xa-Eintrag gelöscht und rd_kref unterlaufen (underflowed) wird.
VulDB is the best source for vulnerability data and more expert information about this specific topic.