Re: [PATCH] iio: temperature: tsys02d: Fix state desynchronization on resolution write error

From: Joshua Crofts

Date: Mon Sep 07 2026 - 10:55:52 EST


On Mon, 7 Sep 2026 09:53:53 +0100
Salah Triki <salah.triki@xxxxxxxxx> wrote:

> In tsys02d_write_raw(), dev_data->res_index is updated before checking
> the return value of ms_sensors_write_resolution(). If the hardware I2C
> write operation fails, dev_data->res_index remains updated with the
> new index despite the physical sensor remaining in its previous state.
>
> This leads to a state desynchronization where subsequent reads via
> tsys02d_read_raw() return an incorrect sampling frequency.
>
> Fix this by performing the I2C write first and updating dev_data->res_index
> only if ms_sensors_write_resolution() succeeds.
>
> Fixes: 53bf4d067d51 ("Add tsys02d meas-spec driver support")
> Signed-off-by: Salah Triki <salah.triki@xxxxxxxxx>

Was this found using an LLM or manually?

> ---
> drivers/iio/temperature/tsys02d.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/iio/temperature/tsys02d.c b/drivers/iio/temperature/tsys02d.c
> index 3ef72347456e..f50426beacdd 100644
> --- a/drivers/iio/temperature/tsys02d.c
> +++ b/drivers/iio/temperature/tsys02d.c
> @@ -73,8 +73,9 @@ static int tsys02d_write_raw(struct iio_dev *indio_dev,
> if (i < 0)
> return -EINVAL;
> mutex_lock(&dev_data->lock);
> - dev_data->res_index = i;

+ blank line

> ret = ms_sensors_write_resolution(dev_data, i);
> + if (!ret)
> + dev_data->res_index = i;

+ blank line

> mutex_unlock(&dev_data->lock);
>
> return ret;

Reviewed-by: Joshua Crofts <joshua.crofts1@xxxxxxxxx>

--
Kind regards,
Joshua Crofts