mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] power: reset: reboot-mode: drop the device reference on unregister
@ 2026-11-03 10:55 Wentao Liang
  2026-11-03 11:10 ` Krzysztof Kozlowski
  0 siblings, 1 reply; 2+ messages in thread
From: Wentao Liang @ 2026-11-03 10:55 UTC (permalink / raw)
  To: Sebastian Reichel; +Cc: linux-pm, linux-kernel, Wentao Liang, stable

reboot_mode_unregister_device() looks the device up with
class_find_device(), which takes a reference that the caller has to drop
with put_device().  The function only calls device_unregister(), which
drops the reference taken when the device was registered.  The lookup
reference therefore leaks and the struct device allocated by
device_create() is never freed.

Drop the class_find_device() reference before unregistering, the same
way device_destroy() does.

Fixes: cfaf0a90789a ("power: reset: reboot-mode: Expose sysfs for registered reboot_modes")
Cc: stable@vger.kernel.org
Assisted-by: DeepSeek-V4.1-Flash and OpenAI Codex
Signed-off-by: Wentao Liang <vulab@iscas.ac.cn>
---
 drivers/power/reset/reboot-mode.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/power/reset/reboot-mode.c b/drivers/power/reset/reboot-mode.c
index 3611bed341e1..db55b71f0c7e 100644
--- a/drivers/power/reset/reboot-mode.c
+++ b/drivers/power/reset/reboot-mode.c
@@ -249,6 +249,8 @@ static inline void reboot_mode_unregister_device(struct reboot_mode_driver *rebo
 		return;
 
 	priv = dev_get_drvdata(reboot_mode_device);
+	/* matches class_find_device() above */
+	put_device(reboot_mode_device);
 	device_unregister(reboot_mode_device);
 
 	if (!priv)
-- 
2.34.1


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-11-03 11:10 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-11-03 10:55 [PATCH] power: reset: reboot-mode: drop the device reference on unregister Wentao Liang
2026-11-03 11:10 ` Krzysztof Kozlowski

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®