🇰🇷 한글 설명
Linux 커널의 cdns-dsi 드라이버에서 사용되는 UNIVERSAL_DEV_PM_OPS() 매크로가 런타임 PM과 시스템 절전 모드 모두에 동일한 콜백을 사용하여 클록을 중복으로 비활성화하는 문제가 발생합니다. 이로 인해 클록 프레임워크에서 이미 비활성화된 클록을 다시 비활성화하려 할 때 경고(WARNING) 메시지가 출력됩니다.
💡 쉬운 설명
컴퓨터가 절전 모드로 들어갈 때 전원을 끄는 과정에서 이미 꺼진 스위치를 다시 끄려고 시도하여 시스템에 경고 메시지가 발생하는 오류입니다. 이는 시스템의 안정성을 저해할 수 있는 소프트웨어 설정 오류입니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
drm/bridge: cdns-dsi: Replace deprecated UNIVERSAL_DEV_PM_OPS()
The deprecated UNIVERSAL_DEV_PM_OPS() macro uses the provided callbacks
for both runtime PM and system sleep. This causes the DSI clocks to be
disabled twice: once during runtime suspend and again during system
suspend, resulting in a WARN message from the clock framework when
attempting to disable already-disabled clocks.
[ 84.384540] clk:231:5 already disabled
[ 84.388314] WARNING: CPU: 2 PID: 531 at /drivers/clk/clk.c:1181 clk_core_disable+0xa4/0xac
...
[ 84.579183] Call trace:
[ 84.581624] clk_core_disable+0xa4/0xac
[ 84.585457] clk_disable+0x30/0x4c
[ 84.588857] cdns_dsi_suspend+0x20/0x58 [cdns_dsi]
[ 84.593651] pm_generic_suspend+0x2c/0x44
[ 84.597661] ti_sci_pd_suspend+0xbc/0x15c
[ 84.601670] dpm_run_callback+0x8c/0x14c
[ 84.605588] __device_suspend+0x1a0/0x56c
[ 84.609594] dpm_suspend+0x17c/0x21c
[ 84.613165] dpm_suspend_start+0xa0/0xa8
[ 84.617083] suspend_devices_and_enter+0x12c/0x634
[ 84.621872] pm_suspend+0x1fc/0x368
To address this issue, replace UNIVERSAL_DEV_PM_OPS() with
RUNTIME_PM_OPS(). Bridge and panel drivers should only deal with runtime
PM, as the DRM framework manages system-wide power transitions through
the bridge enable() and disable() hooks.
📍 영향받는 시스템
Linux kernel (drm/bridge: cdns-dsi 드라이버 포함 버전)
⚔️ 공격 벡터
직접적인 공격 가능성은 낮으나, 시스템 절전 모드 진입 시 커널 경고 및 로그 발생 유발 가능
🛡️ 대응 방법
UNIVERSAL_DEV_PM_OPS() 매크로를 RUNTIME_PM_OPS()로 교체하여 DRM 프레임워크가 시스템 전원 전환을 관리하도록 수정
🔧 검증 코드
명령어 실행 결과로 'already disabled' 또는 'clk_core_disable' 관련 경고 메시지가 출력되면 해당 취약점이 존재하는 상태입니다.
dmesg | grep -E 'clk:.*already disabled|WARNING:.*clk_core_disable'
💻 영향받는 소프트웨어
NVIDIA vGPU Guest Driver for Linux