🇰🇷 한글 설명
Linux 커널 amdgpu 드라이버에서 mode1 리셋 이후 장치 제거 시 psp_hw_fini 경로에서 TTM 버퍼 객체의 pin_count가 중복 증가하여 커널 경고(calltrace)가 발생하는 문제입니다. mode1 리셋 중 suspend-resume 과정에서 TA 펌웨어 버퍼를 불필요하게 재초기화한 것이 원인이며, 해당 재초기화를 생략하도록 수정되었습니다.
💡 쉬운 설명
AMD 그래픽 카드 드라이버를 초기화(리셋) 한 뒤 제거할 때 메모리 관리 처리가 중복되어 커널 경고 메시지가 출력됩니다. 시스템이 멈추는 등의 심각한 영향은 주로 경고 수준에 머뭅니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
drm/amdgpu: fix ttm_bo calltrace warning in psp_hw_fini
The call trace occurs when the amdgpu is removed after
the mode1 reset. During mode1 reset, from suspend to resume,
there is no need to reinitialize the ta firmware buffer
which caused the bo pin_count increase redundantly.
[ 489.885525] Call Trace:
[ 489.885525] <TASK>
[ 489.885526] amdttm_bo_put+0x34/0x50 [amdttm]
[ 489.885529] amdgpu_bo_free_kernel+0xe8/0x130 [amdgpu]
[ 489.885620] psp_free_shared_bufs+0xb7/0x150 [amdgpu]
[ 489.885720] psp_hw_fini+0xce/0x170 [amdgpu]
[ 489.885815] amdgpu_device_fini_hw+0x2ff/0x413 [amdgpu]
[ 489.885960] ? blocking_notifier_chain_unregister+0x56/0xb0
[ 489.885962] amdgpu_driver_unload_kms+0x51/0x60 [amdgpu]
[ 489.886049] amdgpu_pci_remove+0x5a/0x140 [amdgpu]
[ 489.886132] ? __pm_runtime_resume+0x60/0x90
[ 489.886134] pci_device_remove+0x3e/0xb0
[ 489.886135] __device_release_driver+0x1ab/0x2a0
[ 489.886137] driver_detach+0xf3/0x140
[ 489.886138] bus_remove_driver+0x6c/0xf0
[ 489.886140] driver_unregister+0x31/0x60
[ 489.886141] pci_unregister_driver+0x40/0x90
[ 489.886142] amdgpu_exit+0x15/0x451 [amdgpu]
📍 영향받는 시스템
AMD GPU(amdgpu 드라이버)를 사용하는 Linux 커널 시스템 (수정 이전 커널 버전)
⚔️ 공격 벡터
로컬 사용자가 GPU 리셋 및 드라이버 제거 과정을 유발할 수 있으며, 원격 공격 경로는 확인되지 않음
🛡️ 대응 방법
배포판 제공 최신 Linux 커널 업데이트를 적용하여 해당 수정 패치가 포함된 버전으로 재부팅
🔧 검증 코드
출력된 커널 버전이 배포판의 보안 업데이트 목록에서 해당 CVE 수정이 포함된 빌드 이후인지 비교하고, 그 이전이면 커널 업데이트가 필요합니다.
uname -r && (dpkg -l linux-image-$(uname -r) 2>/dev/null || rpm -q kernel 2>/dev/null)