thermal/of: add missing of_node_put()
authorJulia Lawall <Julia.Lawall@inria.fr>
Thu, 7 Sep 2023 09:55:18 +0000 (11:55 +0200)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Mon, 11 Sep 2023 15:16:36 +0000 (17:16 +0200)
for_each_child_of_node performs an of_node_get on each
iteration, so a break out of the loop requires an
of_node_put.

This was done using the Coccinelle semantic patch
iterators/for_each_child.cocci

Signed-off-by: Julia Lawall <Julia.Lawall@inria.fr>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/thermal/thermal_of.c

index 4ca9057..1e0655b 100644 (file)
@@ -37,8 +37,10 @@ static int of_find_trip_id(struct device_node *np, struct device_node *trip)
         */
        for_each_child_of_node(trips, t) {
 
-               if (t == trip)
+               if (t == trip) {
+                       of_node_put(t);
                        goto out;
+               }
                i++;
        }
 
@@ -401,8 +403,10 @@ static int thermal_of_for_each_cooling_maps(struct thermal_zone_device *tz,
 
        for_each_child_of_node(cm_np, child) {
                ret = thermal_of_for_each_cooling_device(tz_np, child, tz, cdev, action);
-               if (ret)
+               if (ret) {
+                       of_node_put(child);
                        break;
+               }
        }
 
        of_node_put(cm_np);