🇰🇷 한글 설명
리눅스 커널의 DRM/TTM 구성 요소에서 스왑아웃 실패 시 LRU 리스트를 순회하는 과정 중 무한 루프가 발생하는 취약점이 발견되었습니다. 리소스가 리스트의 잘못된 위치에 배치되어 동일한 리소스를 반복적으로 참조하게 되며, 이를 해결하기 위해 리소스 제거 로직을 성공 경로로 변경하는 패치가 적용되었습니다.
💡 쉬운 설명
컴퓨터가 메모리를 정리하는 과정에서 특정 오류가 발생하면 시스템이 무한 반복 상태에 빠져 멈출 수 있는 문제입니다. 이로 인해 시스템이 응답하지 않거나 완전히 다운될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
drm/ttm: Fix ttm_bo_swapout() infinite LRU walk on swapout failure
When ttm_tt_swapout() fails, the current code calls
ttm_resource_add_bulk_move() followed by ttm_resource_move_to_lru_tail()
to restore the resource's bulk_move membership.
However, ttm_resource_move_to_lru_tail() places the resource at the tail
of the LRU list which, relative to the walk cursor's hitch node (placed
immediately after the resource when it was yielded), puts the resource
*in front of the* the hitch. The next list_for_each_entry_continue() from
the hitch finds the same resource again, causing an infinite loop.
Fix by deferring del_bulk_move to the success path only.
On the success path, TTM_TT_FLAG_SWAPPED has just been set by
ttm_tt_swapout() but the resource is still tracked in the bulk_move range,
so ttm_resource_del_bulk_move()'s !ttm_resource_unevictable() guard would
incorrectly skip the removal. Introduce
ttm_resource_del_bulk_move_unevictable() which bypasses that guard.
📍 영향받는 시스템
Linux Kernel (DRM/TTM subsystem)
⚔️ 공격 벡터
로컬 시스템에서 메모리 관리 및 스왑아웃을 유도하여 커널 무한 루프 유발
🛡️ 대응 방법
리눅스 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인