🇰🇷 한글 설명
Linux 커널의 drm/amdkfd 구성 요소에서 프로세스 종료 시 svm_range_restore_work 작업이 교착 상태(Deadlock)에 빠지는 취약점이 발견되었습니다. 이는 메모리 해제 과정에서 특정 락(lock)을 획득하려는 시도가 서로 충돌하여 시스템이 멈추는 현상을 유발합니다.
💡 쉬운 설명
컴퓨터 프로그램이 종료될 때 메모리를 정리하는 과정에서 서로가 서로를 기다리며 멈춰버리는 현상이 발생할 수 있습니다. 이로 인해 시스템이 응답하지 않거나 먹통이 될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
drm/amdkfd: svm range restore work deadlock when process exit
kfd_process_notifier_release flush svm_range_restore_work
which calls svm_range_list_lock_and_flush_work to flush deferred_list
work, but if deferred_list work mmput release the last user, it will
call exit_mmap -> notifier_release, it is deadlock with below backtrace.
Move flush svm_range_restore_work to kfd_process_wq_release to avoid
deadlock. Then svm_range_restore_work take task->mm ref to avoid mm is
gone while validating and mapping ranges to GPU.
Workqueue: events svm_range_deferred_list_work [amdgpu]
Call Trace:
wait_for_completion+0x94/0x100
__flush_work+0x12a/0x1e0
__cancel_work_timer+0x10e/0x190
cancel_delayed_work_sync+0x13/0x20
kfd_process_notifier_release+0x98/0x2a0 [amdgpu]
__mmu_notifier_release+0x74/0x1f0
exit_mmap+0x170/0x200
mmput+0x5d/0x130
svm_range_deferred_list_work+0x104/0x230 [amdgpu]
process_one_work+0x220/0x3c0
📍 영향받는 시스템
AMD GPU를 사용하는 Linux 커널 (amdkfd 드라이버 포함 버전)
⚔️ 공격 벡터
로컬 프로세스 종료 시 발생하는 레이스 컨디션(Race Condition)을 통한 시스템 서비스 거부(DoS)
🛡️ 대응 방법
amdkfd의 svm_range_restore_work 플러시 로직이 수정된 최신 Linux 커널로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 배포판의 보안 업데이트 버전인지 확인하십시오.