summaryrefslogtreecommitdiffstats
path: root/drivers/of
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2019-09-12 10:25:35 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2019-09-12 10:30:43 +0200
commitcf7b9c3d15a17c8b74bb37a0f8064aaed65f234d (patch)
treec1aa57848cd82772425ed53489a3747ef61f06e0 /drivers/of
parentfc45db983faa9b6731c2c57d117339c0063778b4 (diff)
downloadbarebox-cf7b9c3d15a17c8b74bb37a0f8064aaed65f234d.tar.gz
barebox-cf7b9c3d15a17c8b74bb37a0f8064aaed65f234d.tar.xz
of: Fix memory hole in of_find_node_by_reproducible_name()
of_get_reproducible_name() returns an allocated string, so we must free it. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/of')
-rw-r--r--drivers/of/base.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/drivers/of/base.c b/drivers/of/base.c
index 838f530f85..22077fa397 100644
--- a/drivers/of/base.c
+++ b/drivers/of/base.c
@@ -2306,9 +2306,17 @@ struct device_node *of_find_node_by_reproducible_name(struct device_node *from,
{
struct device_node *np;
- of_tree_for_each_node_from(np, from)
- if (!of_node_cmp(of_get_reproducible_name(np), name))
+ of_tree_for_each_node_from(np, from) {
+ char *rep = of_get_reproducible_name(np);
+ int res;
+
+ res = of_node_cmp(rep, name);
+
+ free(rep);
+
+ if (!res)
return np;
+ }
return NULL;
}