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: a5f8c7da3dbe ("iio: adc: Add AD7768-1 ADC basic support") Cc: stable@vger.kernel.org Signed-off-by: Wentao Liang --- drivers/iio/adc/ad7768-1.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/drivers/iio/adc/ad7768-1.c b/drivers/iio/adc/ad7768-1.c index 73fb734d06b2..94e746c78cd8 100644 --- a/drivers/iio/adc/ad7768-1.c +++ b/drivers/iio/adc/ad7768-1.c @@ -1505,12 +1505,16 @@ static int ad7768_triggered_buffer_alloc(struct iio_dev *indio_dev) if (ret) return ret; + ret = devm_iio_triggered_buffer_setup(indio_dev->dev.parent, indio_dev, + &iio_pollfunc_store_time, + &ad7768_trigger_handler, + &ad7768_buffer_ops); + if (ret) + return ret; + indio_dev->trig = iio_trigger_get(st->trig); - return devm_iio_triggered_buffer_setup(indio_dev->dev.parent, indio_dev, - &iio_pollfunc_store_time, - &ad7768_trigger_handler, - &ad7768_buffer_ops); + return 0; } static int ad7768_vcm_enable(struct regulator_dev *rdev) -- 2.34.1