CVE-2026-97952 in Linux
Zusammenfassung
von VulDB • 25.09.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
sunvdc: Unmapping von LDC-Cookies bei fehlgeschlagener Deskriptorsendung
__send_request() mapped die Seiten der Anfrage in die Map-Tabelle des LDC-Kanals (ldc_map_sg()), füllt den Deskriptor aus und markiert ihn als VIO_DESC_READY, bevor es die Türklingel über __vdc_tx_trigger() betätigt. Wenn das Auslösen fehlschlägt, gibt der Fehlerpfad nur eine Meldung aus: Der Deskriptor bleibt im Zustand READY und die Cookies werden niemals entmappt. Die Zuordnung wird normalerweise in vdc_end_one() freigegeben, wenn der Peer den Deskriptor abschließt – ein Deskriptor, dessen Türklingel nie betätigt wurde, wird jedoch niemals abgeschlossen, und da dr->prod bei einem Fehler nicht erhöht wird, besucht auch der Rücksetzungspfad (vdc_requeue_inflight(), der [cons, prod) durchläuft) ihn nicht. Die Einträge in der Map-Tabelle werden dauerhaft geleakt.
Seit dem Commit a11f6ca9aef9 („sunvdc: Kein Endlosschleife bei vio_ldc_send() mit EAGAIN“) treten Auslösefehler unter Last praktisch auf, sodass jeder daraus resultierende I/O-Fehler auch einen Satz von Einträgen aus der festgrößigen (8.192 Einträge pro Kanal) Map-Tabelle leakt. Da der Allokator zusammenhängende Bereiche ausgibt, führen Fragmentierungen dazu, dass große Multi-Segment-Anfragen zuerst fehlschlagen, wenn die Tabelle sich entleert, bis ldc_map_sg() dauerhaft fehlschlägt und die Festplatte bis zum Neustart tot ist.
Dies macht auch jede versuchsbasierte Wiederherstellung unbrauchbar: Das erneute Einreihen der Anfrage bei -EAGAIN remappt die Seiten bei jedem Versuch neu, überschreibt desc->cookies und hinterlässt das vorherige Mapping als Waise, sodass sich die Tabelle mit der Retry-Rate entleert. Dies ist die Speichererschöpfung, die beobachtet wurde, als der Requeue-Ansatz im Oktober 2025 erstmals getestet wurde.
Rückgängigmachen bei Fehler: Unmappe die Cookies, markiere den Deskriptor wieder als FREE und lösche den Anfrageeintrag. Wenn das Auslösen mit -ENOTCONN fehlschlug, hat __vdc_tx_trigger() den Port bereits zurückgesetzt, was sowohl dring als auch den LDC-Kanal einschließlich seiner Map-Tabelle abbaut und neu allokiert – es gibt nichts rückgängig zu machen, und der veraltete Deskriptor darf nicht berührt werden.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.