Description
In the Linux kernel, the following vulnerability has been resolved: irqchip/imgpdc: Fix resource leak, add missing chained handler cleanup on remove The driver allocates domain generic chips using irq_alloc_domain_generic_chips() during probe and sets up chained handlers using irq_set_chained_handler_and_data(). However, on driver removal, the generic chips are not freed and the chained handlers are not removed. The generic chips remain on the global gc_list and may later be accessed by generic interrupt chip suspend, resume, or shutdown callbacks after the driver has been removed, potentially resulting in a use-after-free and kernel crash. The chained handlers that were installed in probe for peripheral and syswake interrupts are also left dangling, which can lead to spurious interrupts accessing freed memory. Fix these issues by: - Setting IRQ_DOMAIN_FLAG_DESTROY_GC flag in domain->flags, so the core code automatically removes generic chips when irq_domain_remove() is called - Clearing all chained handlers with NULL in pdc_intc_remove()
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
b6ef9161e43ad58c3824bd76dc87716276f0cd70 to < 8176773dfceae7978b01c20b233693e072053700affectedb6ef9161e43ad58c3824bd76dc87716276f0cd70 to < c2c7733101bb8c0b29ac9ee41073eaf602821a59affectedb6ef9161e43ad58c3824bd76dc87716276f0cd70 to < 83d7ec14b0938ad8cae008058fd6f912f4a9a312affectedb6ef9161e43ad58c3824bd76dc87716276f0cd70 to < 44567537a2623dcd2b4018a7f043cf8069579e5daffectedb6ef9161e43ad58c3824bd76dc87716276f0cd70 to < 41826e5297e67cd96a0a46fde06a5069a8ce436aaffectedb6ef9161e43ad58c3824bd76dc87716276f0cd70 to < b3a3831b2eb884641906fc5e46207b205b6aea13affectedb6ef9161e43ad58c3824bd76dc87716276f0cd70 to < 0405a65e4ebd9eac13a765f9f02ac05851ca5421affectedb6ef9161e43ad58c3824bd76dc87716276f0cd70 to < 37738fdf2ab1e504d1c63ce5bc0aeb6452d8f057affected
Linux Linux
Default version status: affected
3.12affected0 to < 3.12unaffected5.10.260 to ≤ 5.10.*unaffected5.15.211 to ≤ 5.15.*unaffected6.1.177 to ≤ 6.1.*unaffected6.6.144 to ≤ 6.6.*unaffected6.12.95 to ≤ 6.12.*unaffected6.18.38 to ≤ 6.18.*unaffected7.1.3 to ≤ 7.1.*unaffected7.2 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/8176773dfceae7978b01c20b233693e072053700 ↗
- https://git.kernel.org/stable/c/c2c7733101bb8c0b29ac9ee41073eaf602821a59 ↗
- https://git.kernel.org/stable/c/83d7ec14b0938ad8cae008058fd6f912f4a9a312 ↗
- https://git.kernel.org/stable/c/44567537a2623dcd2b4018a7f043cf8069579e5d ↗
- https://git.kernel.org/stable/c/41826e5297e67cd96a0a46fde06a5069a8ce436a ↗
- https://git.kernel.org/stable/c/b3a3831b2eb884641906fc5e46207b205b6aea13 ↗
- https://git.kernel.org/stable/c/0405a65e4ebd9eac13a765f9f02ac05851ca5421 ↗
- https://git.kernel.org/stable/c/37738fdf2ab1e504d1c63ce5bc0aeb6452d8f057 ↗