All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] thermal/drivers/core: Use put_device() if device_register() fails
@ 2019-08-02  6:55 Yue Hu
  0 siblings, 0 replies; only message in thread
From: Yue Hu @ 2019-08-02  6:55 UTC (permalink / raw)
  To: rui.zhang, edubezval, daniel.lezcano; +Cc: linux-pm, huyue2, zhangwen

From: Yue Hu <huyue2@yulong.com>

Never directly free @dev after calling device_register(), even if it
returned an error! Always use put_device() to give up the reference
initialized.

Signed-off-by: Yue Hu <huyue2@yulong.com>
---
 drivers/thermal/thermal_core.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c
index 6bab66e..ffe5d8e 100644
--- a/drivers/thermal/thermal_core.c
+++ b/drivers/thermal/thermal_core.c
@@ -985,7 +985,7 @@ static void bind_cdev(struct thermal_cooling_device *cdev)
 	result = device_register(&cdev->device);
 	if (result) {
 		ida_simple_remove(&thermal_cdev_ida, cdev->id);
-		kfree(cdev);
+		put_device(&cdev->device);
 		return ERR_PTR(result);
 	}
 
@@ -1292,7 +1292,7 @@ struct thermal_zone_device *
 	dev_set_name(&tz->device, "thermal_zone%d", tz->id);
 	result = device_register(&tz->device);
 	if (result)
-		goto remove_device_groups;
+		goto release_device;
 
 	for (count = 0; count < trips; count++) {
 		if (tz->ops->get_trip_type(tz, count, &trip_type))
@@ -1347,8 +1347,11 @@ struct thermal_zone_device *
 	device_unregister(&tz->device);
 	return ERR_PTR(result);
 
-remove_device_groups:
-	thermal_zone_destroy_device_groups(tz);
+release_device:
+	ida_simple_remove(&thermal_tz_ida, tz->id);
+	put_device(&tz->device);
+	return ERR_PTR(result);
+
 remove_id:
 	ida_simple_remove(&thermal_tz_ida, tz->id);
 free_tz:
-- 
1.9.1


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2019-08-02  6:55 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-08-02  6:55 [PATCH] thermal/drivers/core: Use put_device() if device_register() fails Yue Hu

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.