🇰🇷 한글 설명
Linux 커널의 amdgpu 드라이버에서 vm->task_info 객체의 생명주기 관리 및 참조 횟수(reference counting) 처리 오류로 인해 발생할 수 있는 취약점입니다. 이 패치는 task_info 객체를 동적으로 할당하고 참조 횟수를 기반으로 관리하도록 수정하여 메모리 관리 문제를 해결합니다.
💡 쉬운 설명
컴퓨터의 그래픽 카드를 제어하는 소프트웨어에서 메모리를 관리하는 방식에 실수가 있어 시스템이 불안정해질 수 있는 문제입니다. 이 실수를 바로잡아 메모리가 잘못 사용되거나 충돌이 발생하는 것을 방지합니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
drm/amdgpu: change vm->task_info handling
This patch changes the handling and lifecycle of vm->task_info object.
The major changes are:
- vm->task_info is a dynamically allocated ptr now, and its uasge is
reference counted.
- introducing two new helper funcs for task_info lifecycle management
- amdgpu_vm_get_task_info: reference counts up task_info before
returning this info
- amdgpu_vm_put_task_info: reference counts down task_info
- last put to task_info() frees task_info from the vm.
This patch also does logistical changes required for existing usage
of vm->task_info.
V2: Do not block all the prints when task_info not found (Felix)
V3: Fixed review comments from Felix
- Fix wrong indentation
- No debug message for -ENOMEM
- Add NULL check for task_info
- Do not duplicate the debug messages (ti vs no ti)
- Get first reference of task_info in vm_init(), put last
in vm_fini()
V4: Fixed review comments from Felix
- fix double reference increment in create_task_info
- change amdgpu_vm_get_task_info_pasid
- additional changes in amdgpu_gem.c while porting
📍 영향받는 시스템
Linux kernel (amdgpu driver 포함 버전)
⚔️ 공격 벡터
로컬 공격자가 특수하게 조작된 시스템 호출을 통해 커널 메모리 관리 오류를 유도할 수 있음
🛡️ 대응 방법
amdgpu 드라이버의 참조 횟수 관리 로직이 포함된 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 해결된 패치 버전 이상인지 확인