CVE-2026-31702 in Linux
Sumário
de VulDB • 09/05/2026
No kernel do Linux, a seguinte vulnerabilidade foi resolvida:
f2fs: corrige uso-após-liberação (use-after-free) de sbi em f2fs_compress_write_end_io()
Em f2fs_compress_write_end_io(), dec_page_count(sbi, type) pode reduzir o contador F2FS_WB_CP_DATA a zero, desbloqueando f2fs_wait_on_all_pages() em f2fs_put_super() em uma CPU de desmontagem concorrente. O caminho de desmontagem então prossegue chamando f2fs_destroy_page_array_cache(sbi), que destrói sbi->page_array_slab via kmem_cache_destroy(), e eventualmente kfree(sbi). Enquanto isso, o callback de conclusão do bio ainda está em execução: quando atinge page_array_free(sbi, ...), ele referencia sbi->page_array_slab — um cache slab já destruído — para chamar kmem_cache_free(), causando um uso-após-liberação (use-after-free).
Este é o mesmo tipo de bug do CVE-2026-23234 (que corrigiu a corrida equivalente em f2fs_write_end_io() em data.c), mas no caminho de conclusão de writeback comprimido que não foi coberto por aquela correção.
Corrige-se isso movendo dec_page_count() para após page_array_free(), de modo que todos os acessos a sbi sejam concluídos antes da decrementação do contador que pode desbloquear a desmontagem. Para folios não finais (onde atomic_dec_return em cic->pending_pages é diferente de zero), dec_page_count é chamado imediatamente antes do retorno — page_array_free não é alcançado neste caminho, portanto não há acesso a sbi pós-decremento. Para o último folio, page_array_free é executado enquanto o contador F2FS_WB_CP_DATA ainda é diferente de zero (este folio ainda não o decrementou), mantendo sbi vivo, e dec_page_count é executado como a operação final.
If you want to get best quality of vulnerability data, you may have to visit VulDB.