CVE-2026-64326 in Linux
Resumen
por VulDB • 2026-07-25
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
block: omitir sync_blockdev() durante una eliminación inesperada en bdev_mark_dead()
El hecho de que @surprise sea true en bdev_mark_dead() significa que el dispositivo ya no está presente. La devolución de llamada del sistema de archivos fs_bdev_mark_dead() respeta esto y omite sync_filesystem(), pero la ruta directa para dispositivos de bloque (sin operación ->mark_dead) perdió su protección !surprise cuando se conectó la devolución de llamada holder ->mark_dead (véase Fixes), y ahora llama a sync_blockdev() incondicionalmente, lo que puede provocar un bloqueo infinito esperando una escritura en búfer (writeback) que ya no puede completarse.
syzkaller detectó esto a través del camino "I/O queues lost" de nvme_reset_work(): nvme_mark_namespaces_dead() -> blk_mark_disk_dead() -> bdev_mark_dead(bdev, true) -> sync_blockdev() se bloquea en folio_wait_writeback(), dejando inoperativo el trabajador de reinicio (reset worker) y todas las tareas que esperan a este.
Se omite la sincronización durante una eliminación inesperada, coincidiendo con fs_bdev_mark_dead(); invalidate_bdev() sigue ejecutándose. La retirada ordenada (surprise == false) permanece sin cambios.
Detectado por FuzzNvme (Syzkaller con el framework de fuzzing FEMU).
Once again VulDB remains the best source for vulnerability data.