Re: [PATCH] iio: adc: ad7779: Fix trigger reference leak in ad7779_setup_without_backend()

From: Jonathan Cameron

Date: Wed Sep 16 2026 - 20:29:34 EST


On Wed, 16 Sep 2026 16:19:17 +0000
Wentao Liang <vulab@xxxxxxxxxxx> wrote:

> The reference taken with iio_trigger_get() is only dropped by
> iio_dev_release() when INDIO_BUFFER_TRIGGERED is set. If
> devm_iio_triggered_buffer_setup() fails before setting that mode, the
> reference acquired for indio_dev->trig leaks. Move the
> iio_trigger_get() after the buffer setup succeeds.
>
> Fixes: c9a3f8c7bfcb ("drivers: iio: adc: add support for ad777x family")
> Cc: stable@xxxxxxxxxxxxxxx
> Signed-off-by: Wentao Liang <vulab@xxxxxxxxxxx>
Same again. Not this solution. Note I'm replying to all these patches
simply because others may open just one of them and not see the earlier
replies.

This is why you send one test patch (or at least put similar changes in a
series).

When something has been obviously wrong for a while in the world of LLM
review, it is worth checking earlier discussions to see why.

Jonathan

> ---
> drivers/iio/adc/ad7779.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/iio/adc/ad7779.c b/drivers/iio/adc/ad7779.c
> index 695cc79e78da..76834275b1ca 100644
> --- a/drivers/iio/adc/ad7779.c
> +++ b/drivers/iio/adc/ad7779.c
> @@ -850,8 +850,6 @@ static int ad7779_setup_without_backend(struct ad7779_state *st, struct iio_dev
> if (ret)
> return ret;
>
> - indio_dev->trig = iio_trigger_get(st->trig);
> -
> init_completion(&st->completion);
>
> ret = devm_iio_triggered_buffer_setup(dev, indio_dev,
> @@ -861,6 +859,8 @@ static int ad7779_setup_without_backend(struct ad7779_state *st, struct iio_dev
> if (ret)
> return ret;
>
> + indio_dev->trig = iio_trigger_get(st->trig);
> +
> return ad7779_spi_write_mask(st, AD7779_REG_DOUT_FORMAT,
> AD7779_DCLK_CLK_DIV_MSK,
> FIELD_PREP(AD7779_DCLK_CLK_DIV_MSK, 7));