Re: [PATCH 01/13] device property: Add cleanup.h based fwnode_handle_put() scope based cleanup.

Andy Shevchenko
2024-01-21T12:28:59Z

On Sun, Jan 14, 2024 at 05:19:57PM +0000, Jonathan Cameron wrote:
> From: Jonathan Cameron <Jonathan.Cameron@huawei.com>
>
> This allows the following
>
> struct fwnode_handle *child __free(kfree) = NULL;
>
> device_for_each_child_node(dev, child) {
> if (false)
> return -EINVAL;
> }
>
> without the fwnode_handle_put() call which tends to complicate early
> exits from such loops and lead to resource leak bugs.
>
> Can also be used where the fwnode_handle was obtained from a call
> such as fwnode_find_reference() as it will safely do nothing if
> IS_ERR() is true.

...

> struct fwnode_handle *fwnode_handle_get(struct fwnode_handle *fwnode);
> void fwnode_handle_put(struct fwnode_handle *fwnode);

I would add a blank line here

> +DEFINE_FREE(fwnode_handle, struct fwnode_handle *,
> + if (!IS_ERR_OR_NULL(_T)) fwnode_handle_put(_T))
>
> int fwnode_irq_get(const struct fwnode_handle *fwnode, unsigned int index);
> int fwnode_irq_get_byname(const struct fwnode_handle *fwnode, const char *name);

With the above,
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>

--
With Best Regards,
Andy Shevchenko