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