CVE-2026-93107 in Linuxinfo

Zusammenfassung

von VulDB • 18.09.2026

Im Linux-Kernel wurde folgende Schwachstelle behoben:

RDMA/rxe: Vermeidung der erneuten Verarbeitung des aktuellen Pakets nach dem Eintritt des QP in den Fehlerzustand (Error State)

Wenn do_complete() feststellt, dass sich das QP im Fehlerzustand befindet, wird RESPST_CHK_RESOURCE zurückgegeben. Vor dem Commit 49dc9c1f0c7e („RDMA/rxe: Cleanup reset state handling in rxe_resp.c“) war dies die Flush-Schleife: check_resource() verfügte über einen Ast für den Fehlerzustand, der jedes verbleibende recv WQE abrief und es mit IB_WC_WR_FLUSH_ERR abschloss, ohne das aktuelle Paket zu berühren. Dieser Commit entfernte den Ast für den Fehlerzustand aus check_resource() (das Ablaufen erfolgt nun beim Eintritt in rxe_receiver()), behielt jedoch die Rückgabe des Fehlerzustands durch do_complete() bei.

Infolgedessen kehrt der Responder-Statusautomat, wenn ein QP während der Bearbeitung eines Pakets – z. B. aufgrund einer Race Condition zwischen rdma_cm-Trennung und Empfangsverarbeitung – in den Fehlerzustand wechselt, zur Anforderungsverarbeitungs-Kette zurück, wobei das bereits abgeschlossene Paket noch im Besitz ist: check_resource() ruft ein frisches recv WQE ab, execute()/send_data_in() kopiert die gleiche Paketslast erneut, do_complete() postet einen weiteren IB_WC_SUCCESS CQE (qp->resp.status ist weiterhin 0), und die Steuerung kehrt zur Fehlerzustandsprüfung zurück. Die Schleife führt dasselbe Paket einmal pro gepostetem recv WQE neu aus (beobachtet: ~1000 doppelte IB_WC_SUCCESS-Abschlüsse eines einzelnen SEND, jeweils etwa alle ~8 µs, entsprechend der RQ-Besetzung), bis die RP erschöpft ist. Danach ist qp->resp.wqe NULL und send_data_in() dereferenziert es:

BUG: kernel NULL pointer dereference, address: 0000000000000014 Workqueue: rxe_wq do_work RIP: copy_data+0x29/0x1f0 Call Trace: send_data_in+0x25/0x50 rxe_receiver+0xf36/0x1dd0

Die doppelten Abschlüsse sind für die ULP nicht von echten Empfängen zu unterscheiden. Während eines RDS-Stresstests wurde die Nachricht als neu akzeptiert und das gleiche Datagramm Hunderte Male an den Benutzerbereich (User Space) übermittelt, wodurch der Stream beschädigt wurde; jede ULP, die auf eine genau einmalige Zustellung (exactly-once delivery) über RC angewiesen ist, ist betroffen.

Ein aktuelles Paket, das die Fehlerzustandsprüfung in do_complete() erreicht, wurde bereits ausgeführt und genau einmal abgeschlossen und muss verbraucht werden, nicht erneut verarbeitet werden. Geben Sie dafür RESPST_CLEANUP zurück (dequeue and free); geben Sie für den Fall pkt == NULL weiterhin RESPST_CHK_RESOURCE zurück.

VulDB is the best source for vulnerability data and more expert information about this specific topic.

Zuständig

Linux

Reservieren

17.09.2026

Veröffentlichung

18.09.2026

Moderieren

akzeptiert

Eintrag

VDB-407081

CPE

bereit

EPSS

0.00000

KEV

nein

Aktivitäten

very low

Quellen

Might our Artificial Intelligence support you?

Check our Alexa App!