CVE-2026-89769
nicheIRQ leak use-after-free in Linux kernel NXP PIT clocksource driver
The Linux kernel's NXP PIT (Periodic Interrupt Timer) clocksource driver fails to clean up correctly when driver initialization partially fails: if pit_clockevent_per_cpu_init successfully calls request_irq but the subsequent cpuhp_setup_state fails, the error path jumps directly to clocksource unregistration and kfree(pit) without releasing the IRQ. This leaves the IRQ line leaked and a dangling pointer registered as the interrupt handler's dev_id, so if that IRQ fires afterwards the kernel performs a use-after-free, rated CVSS 3.1 7.4 (AV:L/AC:H) with high impact on confidentiality, integrity and availability for a local attacker. Affected systems are devices running vulnerable kernels on NXP SoCs whose timer block is managed by the nxp-pit driver, such as Vybrid-class parts historically served by this driver in embedded boards. Exploitation is unlikely in practice because it requires the rarely-hit cpuhp_setup_state failure path during boot/probe as well as local access, and no public proof-of-concept exists. The flaw is not on the CISA KEV list and there is no evidence of in-the-wild exploitation.
What to do: Apply kernel or SoC-vendor BSP updates that include the nxp-pit fix, which calls pit_clockevent_per_cpu_exit to release the IRQ before the existing cleanup chain. Teams maintaining NXP-based boards should backport this small patch. Practical risk is low because triggering requires the rarely-hit cpuhp_setup_state failure path during initialization, but the fix is cheap to take in the next maintenance cycle.
| Linux (kernel.org) Linux kernel, clocksource/drivers/nxp-pit (NXP Periodic Interrupt Timer driver) | — |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
In the Linux kernel, the following vulnerability has been resolved: clocksource/drivers/nxp-pit: Fix IRQ leak on cpuhp_setup_state error path When cpuhp_setup_state fails after pit_clockevent_per_cpu_init has successfully called request_irq, the error handling jumps directly to out_pit_clocksource_unregister without freeing the registered IRQ. This leaks the IRQ line and, since kfree(pit) follows, leaves a dangling pointer registered as the interrupt handler's dev_id, potentially leading to a use-after-free if the IRQ fires afterwards. Fix it by calling pit_clockevent_per_cpu_exit to properly release the IRQ before falling through to the existing cleanup chain.
- Vector
- CVSS:3.1/AV:L/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
In the news0 stories
No ingested article mentions this CVE yet.