CVE-2026-90193 in Linux
요약
\~에 의해 VulDB • 2026. 09. 17.
리눅스 커널에서 다음 취약점이 해결되었습니다:
mailbox: qcom-cpucp: IRQ 핸들러에서의 PREEMPT_RT 자기 교착(deadlock) 수정
qcom_cpucp_mbox_irq_fn()은 chan->lock을 획득한 상태에서 mbox_chan_received_data()를 호출합니다. PREEMPT_RT 환경에서는 spin_lock_irqsave()가 rt_spinlock(rtmutex 기반)으로 변환되며, 이는 소유권을 추적하고 슬립(sleep)할 수 있습니다.
mbox_chan_received_data()에 의해 트리거되는 콜백 체인은 결국 mailbox_clear_channel() -> mbox_send_message() -> add_to_rbuf()로 이어지며, 여기서는 동일한 chan->lock을 다시 획득하려고 시도합니다. rtmutex는 같은 소유자에 의한 재진입(lock re-entrancy) 시도를 감지하므로, 스레드는 이미 자신이 보유하고 있는 잠금에 대기하며 영구적인 교착 상태(deadlock)에 빠집니다.
이러한 교착 상태는 'irq/N-apss_cpucp_mbox'가 D 상태로 고정되는 형태로 나타나며, 다음 호출 추적(call trace)을 보입니다: rt_spin_lock -> mbox_send_message -> mailbox_clear_channel -> scmi_rx_callback -> mbox_chan_received_data [여기서 잠금]
해결책으로 chan->cl을 로컬에 저장하고, 잠금 내부에서 HW 인터럽트 레지스터를 지운 후, 잠금을 해제한 후에야 mbox_chan_received_data()를 호출합니다. 이는 chan->cl 접근에 대한 상호 배타성(mutual exclusion)은 유지하면서 PREEMPT_RT 교착 상태를 유발하는 잠금 재진입(lock re-entrancy)을 피합니다.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.