🇰🇷 한글 설명
Linux 커널의 amd_pmc 드라이버에서 i8042가 활성화하지 않은 IRQ1 웨이크업 소스를 비활성화하려 할 때 발생하는 문제입니다. 이로 인해 wake_depth 값이 0 미만으로 떨어지며 커널 경고(WARNING)가 발생할 수 있습니다. 이를 해결하기 위해 PMC 핸들러를 i8042 핸들러와 동일한 dev_pm_ops 세트로 호출하도록 수정되었습니다.
💡 쉬운 설명
컴퓨터가 절전 모드에서 깨어날 때 사용하는 신호 설정 과정에서 오류가 발생하여 시스템 경고가 뜨는 문제입니다. 특정 상황에서 시스템이 예상치 못한 동작을 하거나 로그에 오류 메시지가 남을 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
platform/x86/amd/pmc: Only disable IRQ1 wakeup where i8042 actually enabled it
Wakeup for IRQ1 should be disabled only in cases where i8042 had
actually enabled it, otherwise "wake_depth" for this IRQ will try to
drop below zero and there will be an unpleasant WARN() logged:
kernel: atkbd serio0: Disabling IRQ1 wakeup source to avoid platform firmware bug
kernel: ------------[ cut here ]------------
kernel: Unbalanced IRQ 1 wake disable
kernel: WARNING: CPU: 10 PID: 6431 at kernel/irq/manage.c:920 irq_set_irq_wake+0x147/0x1a0
The PMC driver uses DEFINE_SIMPLE_DEV_PM_OPS() to define its dev_pm_ops
which sets amd_pmc_suspend_handler() to the .suspend, .freeze, and
.poweroff handlers. i8042_pm_suspend(), however, is only set as
the .suspend handler.
Fix the issue by call PMC suspend handler only from the same set of
dev_pm_ops handlers as i8042_pm_suspend(), which currently means just
the .suspend handler.
To reproduce this issue try hibernating (S4) the machine after a fresh boot
without putting it into s2idle first.
[ij: edited the commit message.]
📍 영향받는 시스템
Linux Kernel (AMD PMC 드라이버를 사용하는 x86 시스템)
⚔️ 공격 벡터
로컬 시스템에서 하이버네이션(S4)을 수행할 때 발생하는 논리적 오류 (직접적인 원격 공격 불가)
🛡️ 대응 방법
최신 보안 패치가 적용된 Linux 커널로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인하십시오.