]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
hwmon: (lm90) Stop work before releasing hwmon device
authorGuenter Roeck <linux@roeck-us.net>
Thu, 14 May 2026 21:31:49 +0000 (14:31 -0700)
committerGuenter Roeck <linux@roeck-us.net>
Sat, 16 May 2026 15:09:55 +0000 (08:09 -0700)
commitb09a45601094c7f4ec4db8090b825fa61e169d93
tree07b6c47b639461cfabaf34117b00fd9f2662c51b
parent51f57607e30bee282a1d40845f89a311cbb26481
hwmon: (lm90) Stop work before releasing hwmon device

Sashiko reports:

In lm90_probe(), the devm action to cancel the alert_work and report_work
(lm90_restore_conf) is registered in lm90_init_client() before
devm_hwmon_device_register_with_info() is called.

Because devm executes cleanup actions in reverse order during module
unbind or probe failure, the hwmon device is unregistered and freed first.

If lm90_alert_work() or lm90_report_alarms() runs in the window between
the hwmon device being freed and the delayed works being cancelled,
lm90_update_alarms() will dereference the freed data->hwmon_dev here.

Fix the problem by canceling the workers separately after registering
the hwmon device and before registering the interrupt handler. This ensures
that the workers are canceled after interrupts are disabled and before
the hwmon device is released. Add "shutdown" flag to indicate that device
shutdown is in progress to prevent workers from being re-armed.

Fixes: f6d0775119fb9 ("hwmon: (lm90) Rework alarm/status handling")
Reported-by: Sashiko <sashiko-bot@kernel.org>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
drivers/hwmon/lm90.c