В ядре Linux устранена следующая уязвимость:
irqchip/ts4800: исправлена ошибка очистки связанного обработчика при удалении. Драйвер устанавливает цепочку обработчиков родительского прерывания во время проверки.
используя irq_set_chained_handler_and_data(), но функция удаления не делает
очистите этот обработчик. Это оставляет висящий обработчик, который может быть вызван, когда
родительское прерывание срабатывает после удаления драйвера, потенциально
доступ к освобожденной памяти и вызывание сбоя ядра.
Кроме того, родительский_irq, полученный с помощью irq_of_parse_and_map(), не является
сохранено, что делает его недоступным для функции удаления. Более того, прерывать
сопоставления, созданные во время проверки, не удаляются должным образом. Исправьте это:
- Сохранение родительского_ирка в зонде
— Очистка связанного обработчика с помощью NULL в ts4800_ic_remove().
- Удаление всех сопоставлений IRQ перед удалением домена, чтобы предотвратить использование ресурсов.
утечки
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: irqchip/ts4800: Fix missing chained handler cleanup on remove The driver installs a chained handler for the parent interrupt during probe using irq_set_chained_handler_and_data(), but the remove function does not clear this handler. This leaves a dangling handler that may be called when the parent interrupt fires after the driver has been removed, potentially accessing freed memory and causing a kernel crash. Additionally, the parent_irq obtained via irq_of_parse_and_map() is not stored, making it inaccessible in the remove function. Moreover, interrupt mappings created during probe are not properly disposed. Fix this by: - Saving parent_irq in probe - Clearing the chained handler with NULL in ts4800_ic_remove() - Disposing all IRQ mappings before domain removal to prevent resource leaks