🇰🇷 한글 설명
Linux 커널의 amd/display 드라이버에서 DCN32 팬텀 플레인 할당 시 발생하는 취약점입니다. 메모리 할당 과정에서 소프트 인터럽트가 비활성화된 상태로 vmalloc이 호출되어 커널 패닉(Crash)을 유발할 수 있습니다.
💡 쉬운 설명
컴퓨터의 그래픽 기능을 처리하는 과정에서 메모리를 빌려오는 방식에 오류가 있어 시스템이 갑자기 멈추거나 꺼질 수 있는 문제입니다. 특정 그래픽 설정이 작동할 때 시스템이 충돌하는 현상이 발생합니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
drm/amd/display: Wrap DCN32 phantom-plane allocation in DC_RUN_WITH_PREEMPTION_ENABLED
[Why]
dcn32_validate_bandwidth() wraps dcn32_internal_validate_bw() with
DC_FP_START()/DC_FP_END(). In x86 non-RT, DC_FP_START takes fpregs_lock(),
which disables local softirqs.
The DML1 path through dcn32_enable_phantom_plane() calls kvzalloc() to
allocate ~335 KiB for dc_plane_state. This triggers the vmalloc path,
which calls BUG_ON(in_interrupt()) because it's invoked within the
FPU-enabled (softirq disabled) region, leading to a kernel crash.
[How]
Wrap the dc_state_create_phantom_plane() call with the
DC_RUN_WITH_PREEMPTION_ENABLED() macro to allow preemption during
this memory allocation.
(cherry picked from commit 885ccbef7b94a8b38f69c4211c679021aa27ad11)
📍 영향받는 시스템
Linux Kernel (AMD DCN32 디스플레이 드라이버를 사용하는 시스템)
⚔️ 공격 벡터
로컬 공격자가 특정 그래픽 디스플레이 설정을 유도하여 커널 패닉(DoS)을 유발할 수 있음
🛡️ 대응 방법
커널 패치를 적용하여 팬텀 플레인 할당 과정을 선점 가능(Preemption enabled) 상태로 래핑해야 함
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 해당 취약점이 해결된 최신 패치 버전인지 확인합니다.