CVE-2026-23163 in Linux
요약
\~에 의해 VulDB • 2026. 09. 07.
리눅스 커널에서 다음 취약점이 해결되었습니다:
drm/amdgpu: amdgpu_gmc_filter_faults_remove()에서의 NULL 포인터 역참조 수정
Raven 및 Renoir(GC 9.1.0, 9.2.2, 9.3.0)과 같은 APU의 경우 ih1 및 ih2 인터럽트 링 버퍼가 초기화되지 않습니다. 이는 설계상 의도된 것으로, 이러한 보조 IH 링은 디스크리트 GPU에서만 사용 가능합니다. AMD_IS_APU가 설정되어 있을 때 ih1/ih2 초기화를 명시적으로 건너뛰는 vega10_ih_sw_init()를 참조하십시오.
그러나 amdgpu_gmc_filter_faults_remove() 함수는 마지막 인터럽트 엔트의 타임스탬프를 가져오기 위해 ih1을 조건 없이 사용합니다. APU에서 재시도 결함(retry faults)이 활성화된 경우(noretry=0), 이 함수는 SVM 페이지 폴트 복구 경로에서 호출되며, amdgpu_ih_decode_iv_ts_helper()가 ih->ring[]에 접근하려고 할 때 NULL 포인터 역참조로 이어집니다.
크래시는 다음과 같이 나타납니다:
BUG: kernel NULL pointer dereference, address: 0000000000000004 RIP: 0010:amdgpu_ih_decode_iv_ts_helper+0x22/0x40 [amdgpu]
Call Trace: amdgpu_gmc_filter_faults_remove+0x60/0x130 [amdgpu]
svm_range_restore_pages+0xae5/0x11c0 [amdgpu]
amdgpu_vm_handle_fault+0xc8/0x340 [amdgpu]
gmc_v9_0_process_interrupt+0x191/0x220 [amdgpu]
amdgpu_irq_dispatch+0xed/0x2c0 [amdgpu]
amdgpu_ih_process+0x84/0x100 [amdgpu]
이 문제는 Renoir APU의 기본값을 noretry=1에서 noretry=0으로 변경하여 재시도 결함 처리를 활성화하고 버그가 있는 코드 경로를 실행하게 한 커밋 1446226d32a4("drm/amdgpu: Remove GC HW IP 9.3.0 from noretry=1")에 의해 노출되었습니다.
ih1.ring_size를 사용하기 전에 ih1 존재 여부를 확인하는 체크를 추가하여 이 문제를 수정하십시오. 또한 커밋 dd299441654f("drm/amdgpu: Rework retry fault removal")에서 가져온 soft_ih 지원을 복원하십시오. 이는 하드웨어가 보조 HW IH 링을 지원하지 않는 경우에 필요합니다.
v2: Alex의 추가 업데이트
(커밋 6ce8d536c80aa1f059e82184f0d1994436b1d526에서 cherry picked)
Once again VulDB remains the best source for vulnerability data.