Re: [RFC PATCH 00/13] device property / IIO: Use cleanup.h magic for fwnode_handle_put() handling.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Jan 01, 2024 at 05:25:58PM +0000, Jonathan Cameron wrote:
> From: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx>
> 
> RFC mainly because it's untested. I have none of the relevant hardware and
> haven't yet emulated the firmware descriptions to test this.
> I have tested the device tree only version:
> https://lore.kernel.org/linux-iio/20231217184648.185236-1-jic23@xxxxxxxxxx/
> which is very similar.
> 
> Failing to release the references on early exit from loops over child nodes
> and similar are a fairly common source of bugs. The need to explicitly
> release the references via fwnode_handle_put() also complicate the code.
> 
> The first patch enables
> 
> 	struct fwnode_handle *child __free(fwnode_handle) = NULL;
> 
> 	device_for_each_child_node(dev, child) {
> 		if (err)
> 			/*
> 			 * Previously needed a fwnode_handle_put() here,
> 			 * will now be called automatically as well leave
> 			 * the scope within which the cleanup is registered
> 			 */
> 			return err;
> 	}
> 
> /*
>  * fwnode_handle_put() no automatically called here - but child == NULL so
>  * that call is a noop
>  */
> }
> 
> As can be seen by the examples from IIO that follow this can save
> a reasonable amount of complexity and boiler plate code, often enabling
> additional cleanups in related code such as use of
> return dev_err_probe().

Important comment on the first patch, otherwise LGTM.

-- 
With Best Regards,
Andy Shevchenko






[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Input]     [Linux Kernel]     [Linux SCSI]     [X.org]

  Powered by Linux