Katalog CVE

CVE-2026-89798

Niskie ryzyko· EPSS 10%
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

Prawdopodobieństwo exploitacji (EPSS)

Niskie ryzyko
0.20%

Percentyl 10 - wyżej niż 10% wszystkich znanych CVE

Streszczenie

W jądrze Linux w rpcrdma_rn_register() obiekt @rn jest wstawiany do rd_xa przez xa_alloc() przed zapisaniem wskaźnika rn_done. Usunięcie urządzenia wyścigujące się z rejestracją może odczytać @rn z rn_done równym NULL i wywołać wskaźnik funkcji NULL. Poprawka zapisuje rn->rn_done przed xa_alloc() i czyści go przy niepowodzeniu alokacji.

Ocena ryzyka

Może wystąpić awaria jądra (null pointer dereference) podczas usuwania urządzenia RDMA równolegle z rejestracją powiadomienia. W scenariuszu niepowodzenia rejestracji może dojść do uszkodzenia niezwiązanego slotu rd_xa i niedomiaru rd_kref.

Rekomendacja

Zaktualizuj jądro Linux do wersji zawierającej poprawkę kolejności zapisu rn_done względem xa_alloc(). Unikaj jednoczesnego usuwania urządzeń RDMA i rejestracji powiadomień do czasu aktualizacji.

Inne podatności w Linux kernel

Zobacz wszystkie
Oryginalny opis (angielski, źródło NVD)

In the Linux kernel, the following vulnerability has been resolved: rpcrdma: arm rn_done before publishing the notification rpcrdma_rn_register() inserts @rn into rd_xa with xa_alloc() before storing the caller's callback in rn->rn_done. The xarray makes @rn reachable to rpcrdma_remove_one(), which walks rd_xa and invokes rn->rn_done(rn) for every registered notification. A device removal that races a fresh registration can therefore observe @rn with rn_done still NULL, because the notification objects are zero allocated by their owners, and call through a NULL function pointer. Store rn->rn_done before xa_alloc() publishes @rn. The xarray's store-side and load-side ordering then guarantees that any CPU which finds @rn in rd_xa also observes the armed callback. rpcrdma_rn_unregister() treats a non-NULL rn_done as the sentinel for a completed registration, so the early store must not survive a failed registration. Clear rn_done again when xa_alloc() fails. Were it left set, the failed-accept cleanup path would call rpcrdma_rn_unregister() on an @rn that was never inserted, erasing an unrelated rd_xa slot and underflowing rd_kref.

Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS