CVE-2026-46194 in Linux
요약
\~에 의해 VulDB • 2026. 05. 29.
리눅스 커널에서 다음 취약점이 해결되었습니다:
f2fs: extent node 삭제 및 writeback 간 node_cnt Race Condition 수정
f2fs_destroy_extent_node()는 extent node를 지우기 전에 FI_NO_EXTENT 플래그를 설정하지 않습니다. I_SYNC이 설정된 상태에서 f2fs_drop_inode()로부터 호출될 경우, 동시에 실행되는 kworker writeback이 동일한 extent 트리에 새로운 extent node를 삽입하여 삭제 작업과 Race Condition을 일으키고, __destroy_extent_node()에서 f2fs_bug_on()을 트리거할 수 있습니다. 해당 시나리오는 다음과 같습니다:
drop inode writeback - iput - f2fs_drop_inode // I_SYNC 설정됨 - f2fs_destroy_extent_node - __destroy_extent_node - while (node_cnt) {
write_lock(&et->lock) __free_extent_tree write_unlock(&et->lock) - __writeback_single_inode - f2fs_outplace_write_data - f2fs_update_read_extent_cache - __update_extent_tree_range // FI_NO_EXTENT이 설정되지 않음, // 새로운 extent node 삽입 } // node_cnt == 0, while 루프 종료 - f2fs_bug_on(node_cnt) // node_cnt > 0
추가로, __update_extent_tree_range()는 EX_READ 타입에 대해서만 FI_NO_EXTENT을 확인하므로, EX_BLOCK_AGE 업데이트는 완전히 보호되지 않은 상태로 남습니다.
이 패치 세트는 __destroy_extent_node()에서 et->lock 하에 FI_NO_EXTENT을 설정하여 다른 호출자(__update_extent_tree_range 및 __drop_extent_tree)와 일관성을 맞추고, EX_READ 및 EX_BLOCK_AGE 트리에 대해 모두 FI_NO_EXTENT을 확인하도록 합니다.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.