lkml.org 
[lkml]   [2022]   [Nov]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH] device property: fix of node refcount leak in fwnode_graph_get_next_endpoint()
On Mon, Nov 21, 2022 at 02:40:49PM +0800, Yang Yingliang wrote:
> The 'parent' returned by fwnode_graph_get_port_parent() with refcount
> incremented when prev is not null, it needs be put when finish using
> it.

...

> ep = fwnode_call_ptr_op(parent, graph_get_next_endpoint, prev);
> - if (ep)
> + if (ep) {
> + if (prev)
> + fwnode_handle_put((struct fwnode_handle *)parent);

Instead of castings, drop the const qualifier in the definition block.

> return ep;
> + }

But, the point is that this is a very tricky code and your commit message
lacks of analysis. Can you extend it and show that every case is covered
correctly?

> - return fwnode_graph_get_next_endpoint(parent->secondary, NULL);
> + ep = fwnode_graph_get_next_endpoint(parent->secondary, NULL);
> + if (prev)

Instead you might consider to replace

parent = fwnode;

by

parent = fwnode_handle_get(fwnode);

but please double check that each branch has proper reference counting.

> + fwnode_handle_put((struct fwnode_handle *)parent);
> + return ep;

--
With Best Regards,
Andy Shevchenko


\
 
 \ /
  Last update: 2022-11-21 11:23    [W:0.031 / U:0.280 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site