cpufreq: dt: eliminate uses of of_node_put()
authorJavier Carrasco <javier.carrasco.cruz@gmail.com>
Tue, 23 Apr 2024 08:27:44 +0000 (10:27 +0200)
committerViresh Kumar <viresh.kumar@linaro.org>
Tue, 23 Apr 2024 09:29:56 +0000 (14:59 +0530)
Make use of the __free() cleanup handler to automatically free nodes
when they get out of scope.

Only find_supply_name() is affected, and the new mechanism removes the
need for a 'goto' and the 'name' local variable.

Signed-off-by: Javier Carrasco <javier.carrasco.cruz@gmail.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
drivers/cpufreq/cpufreq-dt.c

index 2d83bbc65dd0bd69c8b035790ddc1217ddde9fb4..907e22632fda866738695bbfa9cd28374f95d563 100644 (file)
@@ -68,12 +68,9 @@ static int set_target(struct cpufreq_policy *policy, unsigned int index)
  */
 static const char *find_supply_name(struct device *dev)
 {
-       struct device_node *np;
+       struct device_node *np __free(device_node) = of_node_get(dev->of_node);
        struct property *pp;
        int cpu = dev->id;
-       const char *name = NULL;
-
-       np = of_node_get(dev->of_node);
 
        /* This must be valid for sure */
        if (WARN_ON(!np))
@@ -82,22 +79,16 @@ static const char *find_supply_name(struct device *dev)
        /* Try "cpu0" for older DTs */
        if (!cpu) {
                pp = of_find_property(np, "cpu0-supply", NULL);
-               if (pp) {
-                       name = "cpu0";
-                       goto node_put;
-               }
+               if (pp)
+                       return "cpu0";
        }
 
        pp = of_find_property(np, "cpu-supply", NULL);
-       if (pp) {
-               name = "cpu";
-               goto node_put;
-       }
+       if (pp)
+               return "cpu";
 
        dev_dbg(dev, "no regulator for cpu%d\n", cpu);
-node_put:
-       of_node_put(np);
-       return name;
+       return NULL;
 }
 
 static int cpufreq_init(struct cpufreq_policy *policy)