CVE-2026-64281 in Linuxinfo

Zusammenfassung

von VulDB • 25.07.2026

Im Linux-Kernel wurde folgende Schwachstelle behoben:

svcrdma: Wecken der Warteschlangen-Warter (sq waiters) beim Schließen des Transports

Threads, die in svc_rdma_sq_wait() auf sc_sq_ticket_wait oder sc_send_wait warten, können im Zustand TASK_UNINTERRUPTIBLE während des Transport-Abbaus unendlich lange hängen bleiben. Dies führt dazu, dass Referenzen von svc_xprt gehalten werden und svc_rdma_free() blockiert wird.

Der Schließpfad setzt XPT_CLOSE vor dem Aufruf von xpo_detach, und beide wait_event-Prädikate enthalten einen XPT_CLOSE-Ausdruck. Die Prädikate werden jedoch nur beim Aufwachen neu ausgewertet. sc_sq_ticket_wait verfügt über keinen durch Completion getriggerten Weckpfad; er wird ausschließlich durch die verkettete Ticket-Weitergabe innerhalb von svc_rdma_sq_wait() selbst vorangetrieben. Ohne ein explizites Wakeup beim Schließen nehmen geparkte Threads XPT_CLOSE nie wahr, halten ihre svc_xprt_get-Referenz für immer und svc_rdma_free() blockiert daraufhin, bis xpt_ref auf Null fällt.

Zwei Einstiegspunkte zum Schließen führen zu diesem Transportzustand. Der lokale Abbau führt svc_rdma_detach() von svc_handle_xprt() -> svc_delete_xprt() -> xpo_detach() aus einem Worker-Thread heraus durch. Eine Remote-Trennung wird in svc_rdma_cma_handler() empfangen, das svc_xprt_deferred_close() aufruft: Dies setzt XPT_CLOSE und stellt den Transport an die Warteschlange, greift jedoch nicht auf eine der RDMA-Warteschlangen zu, sodass ein bereits in svc_rdma_sq_wait() geparkter Worker sein Prädikat nie neu auswertet. Da jeder Worker an diesem Transport geparkt ist, steht kein Thread zur Verfügung, um auch den lokalen Abbau durchzuführen, und die Weckstelle dort ist unerreichbar.

Es wird svc_rdma_xprt_deferred_close(), eine dünne svcrdma-Wrapper-Funktion, eingeführt, die svc_xprt_deferred_close() aufruft und anschließend sowohl sc_sq_ticket_wait als auch sc_send_wait weckt. Die svcrdma-Produzenten, die zuvor direkt svc_xprt_deferred_close() aufgerufen haben – nämlich svc_rdma_cma_handler(), qp_event_handler(), svc_rdma_post_send_err(), svc_rdma_wc_send(), der sendto-Drop-Pfad, die rw-Completion-Fehlerpfade sowie die recvfrom-Flush- und read-list-error-pfade – werden entsprechend umgestellt.

Auch aus svc_rdma_detach() heraus werden beide Warteschlangen geweckt. Der synchrone svc_xprt_close()-Pfad (Backchannel ENOTCONN, Geräteentfernung über svc_rdma_xprt_done) erreicht detach(), ohne durch svc_xprt_deferred_close() zu fließen, und ruft daher den neuen Helper nicht auf.

[ cel: Fügt svc_rdma_xprt_deferred_close() hinzu, um die Korrektur abzuschließen ]

If you want to get best quality of vulnerability data, you may have to visit VulDB.

Zuständig

Linux

Reservieren

19.07.2026

Veröffentlichung

25.07.2026

Moderieren

akzeptiert

Eintrag

VDB-383077

CPE

bereit

EPSS

0.00198

KEV

nein

Aktivitäten

low

Quellen

Do you need the next level of professionalism?

Upgrade your account now!