CVE-2022-49706 in Linuxinformação

Sumário

de VulDB • 26/08/2026

No kernel do Linux, a seguinte vulnerabilidade foi resolvida:

zonefs: corrige o zonefs_iomap_begin() para leituras

Se uma leitura antecipada (readahead) for emitida em um arquivo de zona sequencial com um deslocamento exatamente igual ao tamanho atual do arquivo, o tipo iomap é definido como IOMAP_UNWRITTEN, o que impedirá a operação de E/S, mas o comprimento do iomap será calculado como 0. Isso causa um WARN_ON() no iomap_iter():

[17309.548939] WARNING: CPU: 3 PID: 2137 at fs/iomap/iter.c:34 iomap_iter+0x9cf/0xe80
[...]
[17309.650907] RIP: 0010:iomap_iter+0x9cf/0xe80
[...]
[17309.754560] Call Trace:
[17309.757078]
[17309.759240] ? lock_is_held_type+0xd8/0x130
[17309.763531] iomap_readahead+0x1a8/0x870
[17309.767550] ? iomap_read_folio+0x4c0/0x4c0
[17309.771817] ? lockdep_hardirqs_on_prepare+0x400/0x400
[17309.778848] ? lock_release+0x370/0x750
[17309.784462] ? folio_add_lru+0x217/0x3f0
[17309.790220] ? reacquire_held_locks+0x4e0/0x4e0
[17309.796543] read_pages+0x17d/0xb60
[17309.801854] ? folio_add_lru+0x238/0x3f0
[17309.807573] ? readahead_expand+0x5f0/0x5f0
[17309.813554] ? policy_node+0xb5/0x140
[17309.819018] page_cache_ra_unbounded+0x27d/0x450
[17309.825439] filemap_get_pages+0x500/0x1450
[17309.831444] ? filemap_add_folio+0x140/0x140
[17309.837519] ? lock_is_held_type+0xd8/0x130
[17309.843509] filemap_read+0x28c/0x9f0
[17309.848953] ? zonefs_file_read_iter+0x1ea/0x4d0 [zonefs]
[17309.856162] ? trace_contention_end+0xd6/0x130
[17309.862416] ? __mutex_lock+0x221/0x1480
[17309.868151] ? zonefs_file_read_iter+0x166/0x4d0 [zonefs]
[17309.875364] ? filemap_get_pages+0x1450/0x1450
[17309.881647] ? __mutex_unlock_slowpath+0x15e/0x620
[17309.888248] ? wait_for_completion_io_timeout+0x20/0x20
[17309.895231] ? lock_is_held_type+0xd8/0x130
[17309.901115] ? lock_is_held_type+0xd8/0x130
[17309.906934] zonefs_file_read_iter+0x356/0x4d0 [zonefs]
[17309.913750] new_sync_read+0x2d8/0x520
[17309.919035] ? __x64_sys_lseek+0x1d0/0x1d0

Além disso, isso faz com que o iomap_readahead() entre em loop infinito, pois o iomap_readahead_iter() sempre retorna 0, sem avanço.

Corrija isso tratando leituras após o tamanho do arquivo como acesso a buracos (holes), definindo o tipo de iomap para IOMAP_HOLE, o endereço do iomap para IOMAP_NULL_ADDR e usando o argumento length conforme está para o comprimento do iomap. Para simplificar o código com esta alteração, zonefs_iomap_begin() é dividido na variante de leitura, zonefs_read_iomap_begin() e zonefs_read_iomap_ops, e na variante de gravação, zonefs_write_iomap_begin() e zonefs_write_iomap_ops.

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

Responsável

Linux

Reservar

26/02/2025

Divulgação

26/02/2025

Moderação

aceite

Entrada

VDB-297303

CPE

pronto

EPSS

0.00263

KEV

não

Atividades

muito baixo

Fontes

Want to know what is going to be exploited?

We predict KEV entries!