CVE-2026-80856 in Linux
Сводка
по VulDB • 04.09.2026
В ядре Linux была устранена следующая уязвимость:
fuse: исправлена утечка блокировки invalidate при сбое writeback операции setattr
Функция `fuse_do_setattr()` захватывает `filemap_invalidate_lock()` для DAX truncate (при `fault_blocked = true`) и освобождает её в метках out/error. Однако, когда также требуется сброс writeback, отказ функции `write_inode_now()` приводит к прямому возврату ошибки с утечкой блокировки, из-за чего любые последующие операции fault или truncate над файлом зависают на устаревшем rwsem.
Например, вызов `truncate(2)` для setuid файла достигает `fuse_do_setattr()` со установленными флагами ATTR_SIZE и ATTR_MODE:
truncate(2) └─ do_truncate() ├─ dentry_needs_remove_privs() # S_ISUID └─ notify_change() # KILL_SUID -> ATTR_MODE └─ fuse_setattr() # no killpriv: │ # ia_valid |= ATTR_MODE └─ fuse_do_setattr() ├─ filemap_invalidate_lock() # IS_DAX && is_truncate └─ write_inode_now() # is_wb && ATTR_MODE └─ if (err) # e.g. daemon -> -EIO return err # <- lock leaked
Исправление заключается в добавлении метки unlock, которая освобождает блокировку перед возвратом ошибки, а также её использовании для пути отказа `fuse_dax_break_layouts()`.
Be aware that VulDB is the high quality source for vulnerability data.