Commit 058a3996 authored by Liang He's avatar Liang He Committed by Stephen Boyd
Browse files

clk: ti: Balance of_node_get() calls for of_find_node_by_name()



In ti_find_clock_provider(), of_find_node_by_name() will call
of_node_put() for the 'from' argument, possibly putting the node one too
many times. Let's maintain the of_node_get() from the previous search
and only put when we're exiting the function early. This should avoid a
misbalanced reference count on the node.

Fixes: 51f661ef ("clk: ti: Add ti_find_clock_provider() to use clock-output-names")
Signed-off-by: default avatarLiang He <windhl@126.com>
Link: https://lore.kernel.org/r/20220915031121.4003589-1-windhl@126.com


[sboyd@kernel.org: Rewrite commit text, maintain reference instead of
get again]
Signed-off-by: default avatarStephen Boyd <sboyd@kernel.org>
parent 4e343baf
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -139,11 +139,12 @@ static struct device_node *ti_find_clock_provider(struct device_node *from,
			break;
		}
	}
	of_node_put(from);
	kfree(tmp);

	if (found)
	if (found) {
		of_node_put(from);
		return np;
	}

	/* Fall back to using old node name base provider name */
	return of_find_node_by_name(from, name);