В ядре Linux устранена следующая уязвимость:
питание: источник питания: lp8788-зарядное устройство: исправить использование после освобождения при удалении
lp8788_charger_remove() сбрасывает charge_work перед отменой регистрации
IRQ. Поток IRQ может поставить в очередь charge_work после того, как флеш_work() выполнит
вернулся. Затем работа может быть продолжена после того, как devres освободит pchg и разыменует.
это в lp8788_charger_event().
Сначала отмените регистрацию IRQ. free_irq() ожидает любого запущенного потока.
обработчик, поэтому ни один обработчик не сможет впоследствии поставить в очередь дополнительную работу. Затем используйте
cancel_work_sync(), чтобы отменить ожидающую работу или дождаться завершения текущей работы.
закончить. Эта проблема была обнаружена с помощью собственного инструмента статического анализа.
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: power: supply: lp8788-charger: fix use-after-free on remove lp8788_charger_remove() flushes charger_work before unregistering the IRQs. An IRQ thread can queue charger_work after flush_work() has returned. The work can then run after devres frees pchg and dereference it in lp8788_charger_event(). Unregister the IRQs first. free_irq() waits for any running threaded handler, so no handler can queue more work afterwards. Then use cancel_work_sync() to cancel pending work or wait for running work to finish. This issue was found by an in-house static analysis tool.