of: base: Shift refcount decrement in of_find_last_cache_level()
authorPierre Gondois <pierre.gondois@arm.com>
Fri, 30 Sep 2022 14:49:36 +0000 (16:49 +0200)
committerRob Herring <robh@kernel.org>
Mon, 3 Oct 2022 16:21:37 +0000 (11:21 -0500)
Currently, of_find_next_cache_node() and of_property_read_u32()
are called on objects after their refcount have been decremented.
Re-order the calls to decrement the refcount after the function
calls.

Signed-off-by: Pierre Gondois <pierre.gondois@arm.com>
Link: https://lore.kernel.org/r/20220930144936.2882481-1-pierre.gondois@arm.com
Signed-off-by: Rob Herring <robh@kernel.org>
drivers/of/base.c

index 5e7c11c..209953c 100644 (file)
@@ -2088,12 +2088,13 @@ int of_find_last_cache_level(unsigned int cpu)
        struct device_node *prev = NULL, *np = of_cpu_device_node_get(cpu);
 
        while (np) {
+               of_node_put(prev);
                prev = np;
-               of_node_put(np);
                np = of_find_next_cache_node(np);
        }
 
        of_property_read_u32(prev, "cache-level", &cache_level);
+       of_node_put(prev);
 
        return cache_level;
 }