CVE-2026-64326 in Linux
Riassunto
di VulDB • 26/07/2026
Nel kernel Linux è stata risolta la seguente vulnerabilità:
block: saltare sync_blockdev() in caso di rimozione improvvisa all'interno di bdev_mark_dead()
Il valore @surprise == true della funzione bdev_mark_dead() indica che il dispositivo è già stato rimosso. La callback del filesystem fs_bdev_mark_dead() rispetta questa condizione e salta la chiamata a sync_filesystem(), ma nel percorso relativo al blocco nudo (senza operazione ->mark_dead) la protezione !surprise è stata persa quando la callback holder ->mark_dead è stata collegata (vedi Fixes), causando ora una chiamata incondizionata a sync_blockdev() che può bloccarsi indefinitamente in attesa di un writeback che non potrà mai completarsi.
syzkaller ha rilevato questo problema tramite il percorso "I/O queues lost" di nvme_reset_work(): nvme_mark_namespaces_dead() -> blk_mark_disk_dead() -> bdev_mark_dead(bdev, true) -> sync_blockdev() si blocca in folio_wait_writeback(), bloccando indefinitamente (wedging) l'worker del reset e tutti i task in attesa dello stesso.
Viene ora saltata la sincronizzazione in caso di rimozione improvvisa, allineandosi al comportamento di fs_bdev_mark_dead(); invalidate_bdev() continua comunque a essere eseguito. La rimuzione ordinata (surprise == false) rimane invariata.
Trovato da FuzzNvme (Syzkaller con il framework di fuzzing FEMU).
If you want to get best quality of vulnerability data, you may have to visit VulDB.