CVE-2026-80589 in Linuxinfo

Zusammenfassung

von VulDB • 26.08.2026

Im Linux-Kernel wurde folgende Schwachstelle behoben:

block: Beenden des Timeout-Timers beim Freigeben einer nie hinzugefügten Festplatte

disk_release() setzt blk_mq_init_allocated_queue() für eine Festplatte zurück, deren Probe vor add_disk() fehlgeschlagen ist, ruft jedoch nur blk_mq_exit_queue() auf. Dort wird q->timeout nicht gestoppt, und dieser Timer läuft weiter: Er bleibt pending (ausstehend), bis er das nächste Mal abläuft, und nicht erst, wenn die letzte Anfrage abgeschlossen ist. Wenn der Treiber also vor dem Hinzufügen der Festplatte I/O-Anfragen ausgegeben hat, wird request_queue freigegeben, während sie noch in einem Timer-Wheel-Bucket verknüpft ist.

Der Commit 6f8191fdf41d („block: simplify disk shutdown“) entfernte den Aufruf von blk_cleanup_queue(), der dies zuvor tat. __del_gendisk() und blk_mq_destroy_queue() tun dies weiterhin; nur der Pfad bei einem fehlgeschlagenen Probe-Vorgang verlor diesen Aufruf.

nvme erreicht diese Situation, weil nvme_update_ns_info() Report Zones oder FDP io-mgmt-recv auf ns->queue sendet, bevor die Festplatte hinzugefügt wird. Ein späterer Fehler – ein paralleler Reset, der NVME_CTRL_FROZEN festlegt, oder das Fehlschlagen von device_add_disk() – führt dazu, dass put_disk() mit einem aktivierten Timer aufgerufen wird:

BUG: KASAN: slab-use-after-free in detach_if_pending+0x30c/0x340 Write of size 8 at addr ffff888004d71310 by task kworker/u8:2/37 __timer_delete_sync+0x156/0x240 kernel/time/timer.c:1621 blk_sync_queue+0x22/0x40 block/blk-core.c:222 nvme_sync_queues+0x100/0x150 drivers/nvme/host/core.c:5362 nvme_reset_work+0x138/0x930 drivers/nvme/host/pci.c:3264

Allocated by task 34: __blk_mq_alloc_disk+0x33/0x100 block/blk-mq.c:4462 nvme_alloc_ns+0x290/0x3870 drivers/nvme/host/core.c:4146

Freed by task 0: blk_free_queue_rcu+0x3a/0x50 block/blk-core.c:254 rcu_core+0xc10/0x1730 kernel/rcu/tree.c:2857

Die dort synchronisierte Warteschlange ist ctrl->admin_q, ein Opfer, das sich einen Timer-Wheel-Bucket mit dem hängenden Eintrag der freigegebenen Warteschlange teilt; andere Ausführungen stießen in enqueue_timer(), __run_timers() oder blk_mq_timeout_work() hinein. Das Fehlschlagen von nvme_alloc_ns() mit einem Debug-Patch macht es deterministisch: Ein gelever Timer löst KASAN innerhalb von Sekunden aus, während 1987 gepachtete Releases keine Splat (Fehlermeldung) erzeugten.

Stoppen Sie den Timer und die Warteschlangen-Arbeitsitems vor blk_mq_exit_queue(), wie dies blk_mq_destroy_queue() tut.

Gefunden durch FuzzNvme.

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

Zuständig

Linux

Reservieren

26.08.2026

Veröffentlichung

26.08.2026

Moderieren

akzeptiert

Eintrag

VDB-395898

CPE

bereit

EPSS

0.00000

KEV

nein

Aktivitäten

low

Quellen

Might our Artificial Intelligence support you?

Check our Alexa App!