Re: [PATCH v6 8/8] iio: dac: ad5770r: Use device_for_each_child_node_scoped()

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

 



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)






[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