CVE-2021-47256 in Linux정보

요약

\~에 의해 VulDB • 2026. 06. 20.

리눅스 커널에서 다음 취약점이 해결되었습니다:

mm/memory-failure: memory_failure에서 페이지 쓰기백(page writeback)을 기다리도록 보장

syzkaller가 clear_inode에서 "BUG_ON(!list_empty(&inode->i_wb_list))"를 트리거합니다:

kernel BUG at fs/inode.c:519! Internal error: Oops - BUG: 0 [#1] SMP
Modules linked in: Process syz-executor.0 (pid: 249, stack limit = 0x00000000a12409d7) CPU: 1 PID: 249 Comm: syz-executor.0 Not tainted 4.19.95 Hardware name: linux,dummy-virt (DT) pstate: 80000005 (Nzcv daif -PAN -UAO) pc : clear_inode+0x280/0x2a8 lr : clear_inode+0x280/0x2a8 Call trace: clear_inode+0x280/0x2a8 ext4_clear_inode+0x38/0xe8 ext4_free_inode+0x130/0xc68 ext4_evict_inode+0xb20/0xcb8 evict+0x1a8/0x3c0 iput+0x344/0x460 do_unlinkat+0x260/0x410 __arm64_sys_unlinkat+0x6c/0xc0 el0_svc_common+0xdc/0x3b0 el0_svc_handler+0xf8/0x160 el0_svc+0x10/0x218 Kernel panic - not syncing: Fatal exception

이 문제의 크래시 덤프(crash dump)는 누군가가 lock_page() 없이 페이지 LRU를 지우기 위해 __munlock_pagevec을 호출했음을 보여줍니다: do_mmap -> mmap_region -> do_munmap -> munlock_vma_pages_range -> __munlock_pagevec.

결과적으로 memory_failure는 wait_on_page_writeback을 기다리지 않고 identify_page_state를 호출합니다. 그리고 truncate_error_page가 이 페이지의 매핑(mapping)을 지운 후, end_page_writeback은 inode->i_wb_list를 지우기 위해 sb_clear_inode_writeback을 호출하지 않습니다. 이로 인해 clear_inode에서 BUG_ON이 트리거됩니다!

PageWriteback도 확인하여 wait_on_page_writeback을 건너뛸지 여부를 결정하도록 수정하여 이를 해결합니다.

Be aware that VulDB is the high quality source for vulnerability data.

출처

Interested in the pricing of exploits?

See the underground prices here!