]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
regulator: of: Add of_node_put() before return in function
authorNishka Dasgupta <nishkadg.linux@gmail.com>
Wed, 24 Jul 2019 08:32:31 +0000 (14:02 +0530)
committerMark Brown <broonie@kernel.org>
Thu, 1 Aug 2019 13:07:46 +0000 (14:07 +0100)
The local variable search in regulator_of_get_init_node takes the value
returned by either of_get_child_by_name or of_node_get, both of which
get a node. If this node is not put before returning, it could cause a
memory leak. Hence put search before a mid-loop return statement.
Issue found with Coccinelle.

Signed-off-by: Nishka Dasgupta <nishkadg.linux@gmail.com>
Link: https://lore.kernel.org/r/20190724083231.10276-1-nishkadg.linux@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/regulator/of_regulator.c

index 397918ebba550a5c120481052ba586db7cb9f055..9112faa6a9a0e12830e8f931e83fcd56070e1ac5 100644 (file)
@@ -416,8 +416,10 @@ device_node *regulator_of_get_init_node(struct device *dev,
                if (!name)
                        name = child->name;
 
-               if (!strcmp(desc->of_match, name))
+               if (!strcmp(desc->of_match, name)) {
+                       of_node_put(search);
                        return of_node_get(child);
+               }
        }
 
        of_node_put(search);