From: Frank Rowand <frank.rowand@xxxxxxxx> of_find_node_by_phandle() does not do an of_node_put() of the existing node in a phandle cache entry when that node is replaced by a new node. Reported-by: Rob Herring <robh+dt@xxxxxxxxxx> Fixes: b8a9ac1a5b99 ("of: of_node_get()/of_node_put() nodes held in phandle cache") Signed-off-by: Frank Rowand <frank.rowand@xxxxxxxx> --- Checkpatch will warn about a line over 80 characters. Let me know if that bothers you. drivers/of/base.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/of/base.c b/drivers/of/base.c index db7fbc0c0893..b57a57752294 100644 --- a/drivers/of/base.c +++ b/drivers/of/base.c @@ -1261,6 +1261,8 @@ struct device_node *of_find_node_by_phandle(phandle handle) if (np->phandle == handle && !of_node_check_flag(np, OF_DETACHED)) { if (phandle_cache) { + if (phandle_cache[masked_handle]) + of_node_put(phandle_cache[masked_handle]); /* will put when removed from cache */ of_node_get(np); phandle_cache[masked_handle] = np; -- Frank Rowand <frank.rowand@xxxxxxxx>