🇰🇷 한글 설명
Linux 커널의 tps65219 레귤레이터 드라이버에서 irq_data.rdev가 초기화되지 않는 취약점이 발견되었습니다. 이로 인해 인터럽트 핸들러 호출 시 정의되지 않은 동작이 발생하여 시스템 오류(Oops)가 발생할 수 있습니다.
💡 쉬운 설명
기기 내부의 전압을 조절하는 부품이 신호를 보낼 때, 시스템이 해당 신호를 처리할 정보를 제대로 준비하지 못해 컴퓨터가 갑자기 멈추거나 오류를 일으킬 수 있는 문제입니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
regulator: tps65219: fix irq_data.rdev not being assigned
Commit 64a6b577490c ("regulator: tps65219: Remove debugging helper
function") removed the tps65219_get_rdev_by_name() helper along with
the irq_data.rdev assignment that depended on it. This left
irq_data.rdev uninitialized for all IRQs, causing undefined behavior
when regulator_notifier_call_chain() is called from the IRQ handler:
Internal error: Oops: 0000000096000004
pc : regulator_notifier_call_chain
lr : tps65219_regulator_irq_handler
Call trace:
regulator_notifier_call_chain
tps65219_regulator_irq_handler
handle_nested_irq
regmap_irq_thread
irq_thread_fn
irq_thread
kthread
ret_from_fork
Instead of restoring a dedicated lookup array, restructure the probe
function to combine regulator registration with IRQ registration in
the same loop. This way the rdev returned by devm_regulator_register()
is naturally available for assigning to irq_data.rdev without any
auxiliary data structure.
Non-regulator IRQs (SENSOR, TIMEOUT) that don't correspond to any
registered regulator are registered with rdev=NULL, and the IRQ handler
is protected with a NULL check to avoid crashing.
📍 영향받는 시스템
tps65219 드라이버를 사용하는 Linux 커널 기반 시스템
⚔️ 공격 벡터
로컬 공격자가 특정 하드웨어 인터럽트를 유도하여 커널 패닉(Kernel Panic)을 일으키는 방식
🛡️ 대응 방법
tps65219 관련 수정 사항이 포함된 최신 Linux 커널 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 커널 버전보다 높은지 확인