CVE-2026-89469: power: supply: lp8727: fix use-after-free in lp8727_release_irq()
In the Linux kernel, the following vulnerability has been resolved:
power: supply: lp8727: fix use-after-free in lp8727releaseirq()
lp8727isrfunc(), the threaded IRQ handler, is the only caller that arms pchg->work via scheduledelayedwork(). lp8727releaseirq() currently cancels the work before freeing the IRQ, so an IRQ delivered in between can re-arm the work through the threaded handler. After .remove returns the devm layer frees pchg while lp8727delayedfunc() may still run and dereference it.
Free the IRQ first so the threaded handler is quiesced and can no longer queue work, then cancel the delayed work to drain the final generation.
This issue was found by an in-house static analysis tool.
Affected Software
Event History
Frequently Asked Questions
When can this use-after-free occur?
It occurs during device removal if an interrupt is delivered after delayed work has been cancelled but before the IRQ is freed. The threaded IRQ handler can then queue delayed work that may run after the device-managed state has been freed.
What component must be present for a system to be exposed?
The affected code is in the Linux kernel LP8727 power-supply driver. Exposure requires use of that driver and a device-removal path in which its IRQ and delayed-work handling can race.
What change resolves the race?
The IRQ must be freed before the delayed work is cancelled. Freeing the IRQ quiesces the threaded handler so it cannot queue another work item, and cancelling the work afterward drains the remaining queued generation.