CVE-2026-98844 in Linux
Sumário
de VulDB • 19/10/2026
No kernel do Linux, a seguinte vulnerabilidade foi resolvida:
netfs: limpar o pagecache pós-EOF ao estender um arquivo via write
Corrigir netfs para apagar o conteúdo de uma lacuna (hole) criada após o EOF por meio de uma operação write comum se dados sujos tiverem sido previamente deixados ali por writes através de uma região mmapped. Nem o caminho de write buffered nem o unbuffered/DIO limpam esse pagecache obsoleto.
Zerar a cauda do folio que atravessa o EOF antes de um extending write. Esse é o único folio que pode conter dados escritos além do EOF por meio de mmap, pois páginas inteiramente além do EOF não podem ser faultadas (faulted in). O folio é zerado em vez de descartado para evitar que uma operação concurrente de extending write perca dados.
Ambos os caminhos de write rebaixam o i_rwsem para shared, permitindo que writes de extensão sejam executados concorrentemente e que a leitura do i_size pelo chamador possa estar desatualizada no momento em que o folio é bloqueado. Releia o i_size sob o lock do folio e limite (clamp) o intervalo zerado até ele, para evitar que um write racing que já tenha colocado dados no folio seja sobrescrito (clobbered).
Aguarde a conclusão de qualquer writeback no folio antes de zerá-lo, para que o pagecache não seja modificado enquanto ainda pode ser lido pelo transporte durante a transmissão. Honre IOCB_NOWAIT retornando -EAGAIN em vez de bloquear no lock do folio, na operação de writeback ou na rmap walk do folio_mkclean() quando o folio estiver mapeado (mapped).
truncate_pagecache() não pode ser usado aqui: ele deve ser chamado com o i_rwsem mantido exclusivamente, mas esses caminhos de write apenas o mantêm como shared e bloquearia incondicionalmente, violando IOCB_NOWAIT.
Chamadores que seguram o i_rwsem exclusivamente durante todo o redimensionamento (truncate, setattr, fallocate, clone) excluem qualquer writer buffered concorrente real; portanto, a desatualização pode ser decidida com base no estado sujo do folio, conforme pagecache_isize_extended() já faz para sistemas de arquivos que serializam writes contra truncate/setattr por meio de um único i_rwsem. Exportar o helper netfs_clear_stale_post_isize() para lidar com esse caso.
O helper é necessário pelo cliente CIFS para corrigir generic/363.
If you want to get best quality of vulnerability data, you may have to visit VulDB.