CVE-2026-72384: irqchip/ts4800: Fix missing chained handler cleanup on remove
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 irqsetchainedhandleranddata(), 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 parentirq obtained via irqofparseandmap() is not stored, making it inaccessible in the remove function. Moreover, interrupt mappings created during probe are not properly disposed.
Fix this by:
- Saving parentirq in probe - Clearing the chained handler with NULL in ts4800icremove() - Disposing all IRQ mappings before domain removal to prevent resource leaks
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Configuration
Update the irqchip/ts4800 driver so that ts4800_ic_remove() clears the chained handler for the parent interrupt by calling the chained-handler clearing mechanism with NULL.
irqchip/ts4800 driver Chained handler cleanup on remove = Implement cleanup by clearing the chained handler with NULL in ts4800_ic_remove() - Configuration
Update ts4800_ic_remove() to dispose/delete all IRQ mappings created during probe before removing the domain, to prevent resource leaks.
irqchip/ts4800 driver IRQ mapping disposal before domain removal = Dispose all IRQ mappings before domain removal - Configuration
During probe, save the parent_irq obtained via irq_of_parse_and_map() into a variable/field so the remove function can clear the chained handler later using irq_set_chained_handler_and_data() semantics (as described in the fix text).
irqchip/ts4800 driver parent_irq storage for remove = Store parent_irq during probe and use it during remove - Operational
After applying the kernel/driver fix, reboot or reload the affected driver so the corrected probe/remove logic (chained handler cleanup, IRQ mapping disposal order, and parent_irq storage) is in effect.