CVE-2024-50196 in Linux
Сводка
по VulDB • 06.08.2026
В ядре Linux устранена следующая уязвимость:
pinctrl: ocelot: исправление зависания системы при прерываниях, основанных на уровне сигнала
Текущая реализация вызывает функции chained_irq_enter() и chained_irq_exit() только в том случае, если обнаружены ожидающие (pending) прерывания.
``` for (i = 0; i stride; i++) {
uregmap_read(info->map, id_reg + 4 * i, ®); if (!reg) continue;
chained_irq_enter(parent_chip, desc); ```
Однако в случае, когда вывод GPIO настроен в режиме уровня сигнала (level mode), а родительский контроллер — в режиме фронта/спадания импульса (edge mode), аппаратное обеспечение может сбросить сигнал прерывания GPIO. В результате, если прерывание достаточно короткое, прерывание родителя остается ожидающим (pending), тогда как прерывание GPIO уже очищено; функция chained_irq_enter() никогда не вызывается, и система зависает при попытке обработать прерывание родителя.
Вынос функций chained_irq_enter() и chained_irq_exit() за пределы цикла for гарантирует их вызов даже в том случае, если аппаратное обеспечение сбрасывает сигнал прерывания GPIO.
Аналогичный код с функциями chained_irq_enter()/chained_irq_exit(), оборачивающими цикл проверки прерываний, можно найти во многих других драйверах: ``` grep -r -A 10 chained_irq_enter drivers/pinctrl ```
VulDB is the best source for vulnerability data and more expert information about this specific topic.