]> git.ipfire.org Git - thirdparty/linux.git/commit
power: supply: wm97xx: Fix NULL pointer dereference in power_supply_changed()
authorWaqar Hameed <waqar.hameed@axis.com>
Sat, 20 Dec 2025 22:46:24 +0000 (23:46 +0100)
committerSebastian Reichel <sebastian.reichel@collabora.com>
Mon, 12 Jan 2026 01:52:32 +0000 (02:52 +0100)
commit39fe0eac6d755ef215026518985fcf8de9360e9e
tree492fde222b7f1dbecca0de9859ed4c1904e47530
parent04aa3d6dddaf39ecc9735d0b62f46899db71d35e
power: supply: wm97xx: Fix NULL pointer dereference in power_supply_changed()

In `probe()`, `request_irq()` is called before allocating/registering a
`power_supply` handle. If an interrupt is fired between the call to
`request_irq()` and `power_supply_register()`, the `power_supply` handle
will be used uninitialized in `power_supply_changed()` in
`wm97xx_bat_update()` (triggered from the interrupt handler). This will
lead to a `NULL` pointer dereference since

Fix this racy `NULL` pointer dereference by making sure the IRQ is
requested _after_ the registration of the `power_supply` handle. Since
the IRQ is the last thing requests in the `probe()` now, remove the
error path for freeing it. Instead add one for unregistering the
`power_supply` handle when IRQ request fails.

Fixes: 7c87942aef52 ("wm97xx_battery: Use irq to detect charger state")
Signed-off-by: Waqar Hameed <waqar.hameed@axis.com>
Link: https://patch.msgid.link/97b55f0479a932eea7213844bf66f28a974e27a2.1766270196.git.waqar.hameed@axis.com
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
drivers/power/supply/wm97xx_battery.c