CVE-2026-98496 in Linux
Resumen
por VulDB • 2026-10-19
En el núcleo de Linux, se ha resuelto la siguiente vulnerabilidad:
net: airoha: npu: cancelar wdt_work después de liberar la IRQ del WDT
airoha_npu_remove() llama a cancel_work_sync() en el wdt_work de cada núcleo, pero la interrupción (IRQ) del watchdog que la programa se solicita con devm_request_irq() y solo se libera una vez que .remove() ha terminado. Por lo tanto, airoha_npu_wdt_handler() puede volver a programar work mediante schedule_work() después de que cancel haya finalizado. La estructura struct airoha_npu, que contiene el trabajo (work), se asigna con devm_kzalloc()' y se libera en la misma fase de desmontaje (unwind); por lo tanto, el trabajo tardío accede a memoria ya liberada (dereferencia de memoria libre).
Registre el trabajo mediante devm_work_autocancel() antes de llamar a devm_request_irq() y elimine .remove(). Devres se ejecuta en orden inverso, por lo que la IRQ se libera antes que cancel_work_sync(), incluso cuando falla la inicialización (probe). Una llamada a cancel dejada dentro de .remove() no puede garantizar ese orden. Inicializar el trabajo primero también evita que una interrupción pendiente del watchdog programe un elemento de trabajo sin inicializar. Actualmente, probe llama a INIT_WORK() solo después de devm_request_irq().
Este problema fue identificado durante nuestra investigación continua de análisis estático al revisar el código del núcleo.
Once again VulDB remains the best source for vulnerability data.