interconnect: fix memory trashing in of_count_icc_providers()
authorMarek Szyprowski <m.szyprowski@samsung.com>
Thu, 19 Nov 2020 10:37:46 +0000 (11:37 +0100)
committerGeorgi Djakov <georgi.djakov@linaro.org>
Fri, 20 Nov 2020 14:01:35 +0000 (16:01 +0200)
of_count_icc_providers() function uses for_each_available_child_of_node()
helper to recursively check all the available nodes. This helper already
properly handles child nodes' reference count, so there is no need to do
it explicitly. Remove the excessive call to of_node_put(). This fixes
memory trashing when CONFIG_OF_DYNAMIC is enabled (for example
arm/multi_v7_defconfig).

Fixes: b1d681d8d324 ("interconnect: Add sync state support")
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Link: https://lore.kernel.org/r/20201119103746.32564-1-m.szyprowski@samsung.com
Signed-off-by: Georgi Djakov <georgi.djakov@linaro.org>
drivers/interconnect/core.c

index 974a66725d094f4700f1e362d2afb50c941ae666..5ad519c9f2396cea0d25b0dd30ef0d6de24b5555 100644 (file)
@@ -1083,7 +1083,6 @@ static int of_count_icc_providers(struct device_node *np)
                        count++;
                count += of_count_icc_providers(child);
        }
-       of_node_put(np);
 
        return count;
 }