🇰🇷 한글 설명
Linux 커널의 amdgpu 드라이버에서 PCI 오류 상태를 처리할 때 발생하는 데드락 취약점입니다. PCI 복구 과정에서 잠금(lock)을 획득하지 않은 상태로 해제하려고 시도하여 시스템이 멈출 수 있습니다.
💡 쉬운 설명
컴퓨터의 그래픽 카드 관련 소프트웨어에서 오류가 발생했을 때, 시스템이 스스로를 복구하려다 오히려 멈춰버리는 현상이 발생할 수 있습니다. 이는 특정 상황에서 소프트웨어가 자원을 관리하는 규칙을 어겨서 발생합니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
drm/amdgpu: handle the case of pci_channel_io_frozen only in amdgpu_pci_resume
In current code, when a PCI error state pci_channel_io_normal is detectd,
it will report PCI_ERS_RESULT_CAN_RECOVER status to PCI driver, and PCI
driver will continue the execution of PCI resume callback report_resume by
pci_walk_bridge, and the callback will go into amdgpu_pci_resume
finally, where write lock is releasd unconditionally without acquiring
such lock first. In this case, a deadlock will happen when other threads
start to acquire the read lock.
To fix this, add a member in amdgpu_device strucutre to cache
pci_channel_state, and only continue the execution in amdgpu_pci_resume
when it's pci_channel_io_frozen.
📍 영향받는 시스템
Linux kernel (amdgpu driver 포함 버전)
⚔️ 공격 벡터
PCI 버스에서 오류(PCI Error)를 유발하여 특정 복구 경로를 실행하게 함으로써 데드락 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 해결된 패치 버전인지 확인