| From 3ac042d6f882738370161341f8c794daef03b190 Mon Sep 17 00:00:00 2001 |
| From: Frank Rowand <frank.rowand@sony.com> |
| Date: Thu, 16 Apr 2020 16:42:47 -0500 |
| Subject: [PATCH] of: unittest: kmemleak in of_unittest_platform_populate() |
| |
| commit 216830d2413cc61be3f76bc02ffd905e47d2439e upstream. |
| |
| kmemleak reports several memory leaks from devicetree unittest. |
| This is the fix for problem 2 of 5. |
| |
| of_unittest_platform_populate() left an elevated reference count for |
| grandchild nodes (which are platform devices). Fix the platform |
| device reference counts so that the memory will be freed. |
| |
| Fixes: fb2caa50fbac ("of/selftest: add testcase for nodes with same name and address") |
| Reported-by: Erhard F. <erhard_f@mailbox.org> |
| Signed-off-by: Frank Rowand <frank.rowand@sony.com> |
| Signed-off-by: Rob Herring <robh@kernel.org> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/of/unittest.c b/drivers/of/unittest.c |
| index d99426f699ef..7e4821a95663 100644 |
| --- a/drivers/of/unittest.c |
| +++ b/drivers/of/unittest.c |
| @@ -1063,10 +1063,13 @@ static void __init of_unittest_platform_populate(void) |
| |
| of_platform_populate(np, match, NULL, &test_bus->dev); |
| for_each_child_of_node(np, child) { |
| - for_each_child_of_node(child, grandchild) |
| - unittest(of_find_device_by_node(grandchild), |
| + for_each_child_of_node(child, grandchild) { |
| + pdev = of_find_device_by_node(grandchild); |
| + unittest(pdev, |
| "Could not create device for node '%pOFn'\n", |
| grandchild); |
| + of_dev_put(pdev); |
| + } |
| } |
| |
| of_platform_depopulate(&test_bus->dev); |
| -- |
| 2.7.4 |
| |