Re: [PATCH v6 1/4] iio: backend: use __free(fwnode_handle) for automatic cleanup

From: Nuno Sá

Date: Sat Mar 14 2026 - 06:52:33 EST


On Fri, 2026-03-13 at 13:58 +0200, Antoniu Miclaus wrote:
> Convert __devm_iio_backend_fwnode_get() to use the __free(fwnode_handle)
> cleanup attribute for the fwnode_back variable, removing the need for
> manual fwnode_handle_put() calls. Move the declaration closer to its
> first use, narrowing its scope.
>
> No functional change.
>
> Signed-off-by: Antoniu Miclaus <antoniu.miclaus@xxxxxxxxxx>
> ---

Reviewed-by: Nuno Sá <nuno.sa@xxxxxxxxxx>

> Changes in v6:
>   - No changes
>
>  drivers/iio/industrialio-backend.c | 6 ++----
>  1 file changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/iio/industrialio-backend.c b/drivers/iio/industrialio-
> backend.c
> index 447b694d6d5f..58f7e1426095 100644
> --- a/drivers/iio/industrialio-backend.c
> +++ b/drivers/iio/industrialio-backend.c
> @@ -952,7 +952,6 @@ EXPORT_SYMBOL_NS_GPL(iio_backend_data_transfer_addr,
> "IIO_BACKEND");
>  static struct iio_backend *__devm_iio_backend_fwnode_get(struct device *dev, const
> char *name,
>   struct fwnode_handle
> *fwnode)
>  {
> - struct fwnode_handle *fwnode_back;
>   struct iio_backend *back;
>   unsigned int index;
>   int ret;
> @@ -967,7 +966,8 @@ static struct iio_backend *__devm_iio_backend_fwnode_get(struct
> device *dev, con
>   index = 0;
>   }
>  
> - fwnode_back = fwnode_find_reference(fwnode, "io-backends", index);
> + struct fwnode_handle *fwnode_back __free(fwnode_handle) =
> + fwnode_find_reference(fwnode, "io-backends", index);
>   if (IS_ERR(fwnode_back))
>   return dev_err_cast_probe(dev, fwnode_back,
>     "Cannot get Firmware reference\n");
> @@ -977,7 +977,6 @@ static struct iio_backend *__devm_iio_backend_fwnode_get(struct
> device *dev, con
>   if (!device_match_fwnode(back->dev, fwnode_back))
>   continue;
>  
> - fwnode_handle_put(fwnode_back);
>   ret = __devm_iio_backend_get(dev, back);
>   if (ret)
>   return ERR_PTR(ret);
> @@ -988,7 +987,6 @@ static struct iio_backend *__devm_iio_backend_fwnode_get(struct
> device *dev, con
>   return back;
>   }
>  
> - fwnode_handle_put(fwnode_back);
>   return ERR_PTR(-EPROBE_DEFER);
>  }
>