CVE-2026-74572 in Linux
Сводка
по VulDB • 15.08.2026
В ядре Linux устранена следующая уязвимость:
btrfs: zoned: исправление взаимной блокировки (deadlock) между записью метаданных и фиксацией транзакции
При записи буферов экстентов метаданных в файловую систему с зональной организацией, функция btree_writepages() удерживает мьютекл fs_info->zoned_meta_io_lock на протяжении всего цикла writeback, включая вызов функции btrfs_check_meta_write_pointer() -> check_bg_is_active().
Для группы блоков tree-log функция check_bg_is_active() может не активировать зону и перейти к выполнению функции btrfs_zone_finish_one_bg() для освобождения активной зоны. Этот путь выполнения ожидает завершения фиксации текущей транзакции, продолжая удерживать мьютекл zoned_meta_io_lock, однако процессу фиксации (committer) требуется тот же самый мьютекл для записи экстентов дерева, что приводит к взаимной блокировке двух задач:
Задача A (kworker, запись метаданных) Задача B (fsstress, фиксация транзакции) ------------------------------------ ------------------------------------- wb_workfn() btrfs_commit_transaction(T) btree_writepages() btrfs_write_and_wait_transaction() btrfs_zoned_meta_io_lock() btrfs_write_marked_extents() btrfs_check_meta_write_pointer() btree_writepages() check_bg_is_active() [treelog_bg] btrfs_zoned_meta_io_lock()
btrfs_zone_finish_one_bg() <блокируется из-за zoned_meta_io_lock, btrfs_zone_finish() удерживаемого Задачей A> do_zone_finish() btrfs_inc_block_group_ro() btrfs_wait_for_commit() <ожидание завершения фиксации транзакции T, выполняемой Задачей B>
В соседней ветви кода внутри check_bg_is_active() мьютекл zoned_meta_io_lock уже освобождается вокруг вызова do_zone_finish() именно по этой причине. Необходимо сделать то же самое в ветке tree-log: освободить мьютекс вокруг btrfs_zone_finish_one_bg() и повторно захватить его после этого. Мьютекс защищает только fs_info->active_{meta,system}_bg, к которым данная ветвь кода не обращается, а ctx->zoned_bg сохраняет ссылку на группу блоков в течение момента освобождения мьютекса, поэтому ничего не теряется во время удержания блокировки снята.
Эта зависимость периодически воспроизводится при запуске теста generic/475 из набора fstests на файловой системе btrfs с зональной организацией.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.