The reference taken with iio_trigger_get() is only dropped by iio_dev_release() when INDIO_BUFFER_TRIGGERED is set. Failure of vl53l0x_configure_irq() or of triggered buffer setup returns before that mode is set and leaks the reference acquired for indio_dev->trig. Move the iio_trigger_get() after those setup steps succeed. Fixes: 762186c6e7b1 ("iio: proximity: vl53l0x-i2c: Added continuous mode support") Cc: stable@vger.kernel.org Signed-off-by: Wentao Liang --- drivers/iio/proximity/vl53l0x-i2c.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/iio/proximity/vl53l0x-i2c.c b/drivers/iio/proximity/vl53l0x-i2c.c index ad3e46d47fa8..abef4129e645 100644 --- a/drivers/iio/proximity/vl53l0x-i2c.c +++ b/drivers/iio/proximity/vl53l0x-i2c.c @@ -374,8 +374,6 @@ static int vl53l0x_probe(struct i2c_client *client) if (ret) return ret; - indio_dev->trig = iio_trigger_get(data->trig); - ret = vl53l0x_configure_irq(client, indio_dev); if (ret) return ret; @@ -387,6 +385,8 @@ static int vl53l0x_probe(struct i2c_client *client) &iio_triggered_buffer_setup_ops); if (ret) return ret; + + indio_dev->trig = iio_trigger_get(data->trig); } return devm_iio_device_register(&client->dev, indio_dev); -- 2.34.1