Re: [PATCH v2 1/4] device property: Introduce fwnode_graph_for_each_endpoint_scoped()

From: Andy Shevchenko

Date: Thu Jun 25 2026 - 02:34:09 EST


On Wed, Jun 24, 2026 at 01:00:09PM -0400, Frank.Li@xxxxxxxxxxx wrote:

> Similar to recently propose for_each_child_of_node_scoped() this new
> version of the loop macro instantiates a new local struct fwnode_handle *
> that uses the __free(fwnode_handle) auto cleanup handling so that if a
> reference to a node is held on early exit from the loop the reference will
> be released. If the loop runs to completion, the child pointer will be NULL
> and no action will be taken.
>
> The reason this is useful is that it removes the need for
> fwnode_handle_put() on early loop exits. If there is a need to retain the
> reference, then return_ptr(child) or no_free_ptr(child) may be used to
> safely disable the auto cleanup.

...

> +#define fwnode_graph_for_each_endpoint_scoped(fwnode, child) \
> + for (struct fwnode_handle *child __free(fwnode_handle) = \
> + fwnode_graph_get_next_endpoint(fwnode, NULL); \

Now there is a misindentation of the \, id est an additional tab is missing.

> + child; child = fwnode_graph_get_next_endpoint(fwnode, child))

Collect more tags and send a v3 :-)

--
With Best Regards,
Andy Shevchenko