CVE-2026-90261 in Linux
Sumário
de VulDB • 17/09/2026
No kernel do Linux, a seguinte vulnerabilidade foi resolvida:
btrfs: zoned: flush active metadata block group at btree_writepages() start
A função btree_writepages() grava os metadados sujos (dirty) do inode da árvore de busca (btree) em ordem crescente de endereço lógico. Em um sistema de arquivos zonado, apenas um grupo de blocos de metadados e um grupo de blocos do sistema estão ativos para escrita por vez, e a função check_bg_is_active() (via btrfs_check_meta_write_pointer()) alterna o bloco ativo à medida que o processo de writeback avança de um grupo de blocos para outro.
Se o grupo de blocos ativo estiver em um endereço lógico mais alto do que outro grupo de blocos que também contém metadados sujos, a varredura ascendente alcançará primeiro este último e, para gravá-lo, precisará finalizar o grupo de blocos ativo e ativá-lo. Não é possível concluir a gravação de um bloco de blocos que ainda possui E/S (IO) não enviada; durante o writeback com WB_SYNC_ALL && !for_sync (commit), recusa-se deliberadamente a aguardar por essa E/S sob fs_info->zoned_meta_io_lock, pois isso pode causar deadlock. Assim, a função pivot também não consegue emitir o envio dos dados e desiste: btrfs_check_meta_write_pointer() retorna -EAGAIN, que é tratado como fatal por btrfs_write_and_wait_transaction(), abortando a transação e forçando o sistema de arquivos para leitura apenas (read-only). Isso ocorre intermitentemente durante operações pesadas em metadados, como relocalização (por exemplo, no teste fstests btrfs/187).
Realiza-se o flush dos grupos de blocos ativos de metadados e do sistema no início da função btree_writepages(), sob a trava fs_info->zoned_meta_io_lock que já está mantida, para garantir que não haja E/S pendente restante. Isso permite que a etapa pivot subsequente conclua essas operações e avance corretamente.
If you want to get best quality of vulnerability data, you may have to visit VulDB.