Messages in this thread Patch in this message | | | From | frowand.list@gmail ... | Subject | [PATCH] of: refcount leak when phandle_cache entry replaced | Date | Tue, 10 Dec 2019 02:14:53 -0600 |
| |
From: Frank Rowand <frank.rowand@sony.com>
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@kernel.org> Fixes: b8a9ac1a5b99 ("of: of_node_get()/of_node_put() nodes held in phandle cache") Signed-off-by: Frank Rowand <frank.rowand@sony.com> ---
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@sony.com>
| |