CVE-2026-90193 in Linux
Сводка
по VulDB • 18.09.2026
В ядре Linux была устранена следующая уязвимость:
mailbox: qcom-cpucp: исправление самодeadlock (deadlock) в обработчике прерываний при использовании PREEMPT_RT
Функция `qcom_cpucp_mbox_irq_fn()` вызывает `mbox_chan_received_data()`, удерживая блокировку `chan->lock`. В конфигурации с поддержкой PREEMPT RT функция `spin_lock_irqsave()` преобразуется в rt-spinlock (основанный на rtmutex), который отслеживает принадлежность и может переходить в состояние сна.
Цепочка обратных вызовов, инициируемая функцией `mbox_chan_received_data()`, в конечном итоге достигает функций `mailbox_clear_channel()` -> `mbox_send_message()` -> `add_to_rbuf()`, которые пытаются повторно захватить ту же самую блокировку `chan->lock`. Поскольку rtmutex обнаруживает попытку реентера (повторного входа) с тем же владельцем, поток блокируется в ожидании блокировки, которая уже удерживается им самим, что приводит к постоянному deadlock.
Этот deadlock проявляется как зависание процесса 'irq/N-apss_cpucp_mbox' в состоянии D со следующим стеком вызовов: rt_spin_lock -> mbox_send_message -> mailbox_clear_channel -> scmi_rx_callback -> mbox_chan_received_data [<- здесь удерживается chan->lock]
Исправление заключается в сохранении `chan->cl` локально и очистке регистра аппаратного прерывания внутри блокировки, а затем вызове функции `mbox_chan_received_data()` после освобождения блокировки. Это сохраняет взаимное исключение для доступа к `chan->cl`, избегая реентера блокировки, который вызывает deadlock в PREEMPT_RT.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.