On Sat, 2024-03-30 at 18:53 +0000, Jonathan Cameron wrote: > From: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx> > > Switching to the _scoped() version removes the need for manual > calling of fwnode_handle_put() in the paths where the code > exits the loop early. In this case that's all in error paths. > > Cc: Nuno Sá <nuno.sa@xxxxxxxxxx> > Signed-off-by: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx> > --- Reviewed-by: Nuno Sa <nuno.sa@xxxxxxxxxx> > drivers/iio/dac/ad5770r.c | 19 ++++++------------- > 1 file changed, 6 insertions(+), 13 deletions(-) > > diff --git a/drivers/iio/dac/ad5770r.c b/drivers/iio/dac/ad5770r.c > index f66d67402e43..c360ebf5297a 100644 > --- a/drivers/iio/dac/ad5770r.c > +++ b/drivers/iio/dac/ad5770r.c > @@ -515,39 +515,32 @@ static int ad5770r_channel_config(struct ad5770r_state > *st) > { > int ret, tmp[2], min, max; > unsigned int num; > - struct fwnode_handle *child; > > num = device_get_child_node_count(&st->spi->dev); > if (num != AD5770R_MAX_CHANNELS) > return -EINVAL; > > - device_for_each_child_node(&st->spi->dev, child) { > + device_for_each_child_node_scoped(&st->spi->dev, child) { > ret = fwnode_property_read_u32(child, "reg", &num); > if (ret) > - goto err_child_out; > - if (num >= AD5770R_MAX_CHANNELS) { > - ret = -EINVAL; > - goto err_child_out; > - } > + return ret; > + if (num >= AD5770R_MAX_CHANNELS) > + return -EINVAL; > > ret = fwnode_property_read_u32_array(child, > "adi,range-microamp", > tmp, 2); > if (ret) > - goto err_child_out; > + return ret; > > min = tmp[0] / 1000; > max = tmp[1] / 1000; > ret = ad5770r_store_output_range(st, min, max, num); > if (ret) > - goto err_child_out; > + return ret; > } > > return 0; > - > -err_child_out: > - fwnode_handle_put(child); > - return ret; > } > > static int ad5770r_init(struct ad5770r_state *st)