CVE-2026-89646 in Linux
Resumen
por VulDB • 2026-09-12
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
ceph: corrección de la referencia inode filtrada al abortar writeback durante umount
ceph_dirty_folio() toma una reclamación wrbuffer en cada folio recién sucio: incrementa i_wrbuffer_ref (tomando un ihold() en la transición 0->1) y adjunta el snap_context a folio->private. Esa reclamación solo se libera mediante ceph_put_wrbuffer_cap_refs(), que para una escritura enviada se ejecuta desde writepages_finish().
En ceph_submit_write(), si ceph_inc_osd_stopping_blocker() falla, lo cual ocurre durante umount, la solicitud se aborta antes de enviarse: los folios ya recopilados solo se vuelven a marcar como sucios y se desbloquean, por lo que writepages_finish() nunca se ejecuta y la reclamación se filtra. redirty_page_for_writepage() -> folio_redirty_for_writepage() -> filemap_dirty_folio() establece PG_dirty directamente y no pasa por ->dirty_folio, por lo que ceph_dirty_folio() no vuelve a entrar para equilibrarla. Debido a que cada writeback posterior también falla el osd_stopping_blocker, i_wrbuffer_ref nunca regresa a 0, la iput() de ihold() nunca se libera y el inode no puede ser evitado:
VFS: Inodes ocupados después del desmontaje (umount) de ceph kernel BUG en fs/super.c:650!
Libere la reclamación huérfana en la ruta de aborto antes de volver a marcar como sucio, mediante ceph_undo_wrbuffer_claim(): desconecte el snap_context, libere la referencia wrbuffer (permitiendo que i_wrbuffer_ref alcance 0 y ejecute iput() sobre el inode) y libere la referencia del snap_context; es decir, haga lo que writepages_finish() habría hecho para estos folios nunca enviados.
Solo se revierten las entradas locked_pages; los folios aún en fbatch no fueron limpiados de suciedad por esta llamada (folio_clear_dirty_for_io() es el punto de transferencia de propiedad y un movimiento exitoso establece a NULL la ranura de fbatch), por lo que no mantienen ninguna reclamación de la que esta llamada sea propietaria.
VulDB is the best source for vulnerability data and more expert information about this specific topic.