Re: [PATCH] iio: chemical: scd30: Prevent potential divide-by-zero error
From: David Lechner
Date: Sat May 09 2026 - 17:25:21 EST
On 5/9/26 4:19 PM, Maxwell Doose wrote:
> In scd30_read_raw, the current value of tmp in the
> IIO_CHAN_INFO_SAMP_FREQ case is unchecked. Add checking to see if the
> value we got was 0 to prevent a divide-by-zero error.
>
> Fixes: 64b3d8b1b0f5 ("iio: chemical: scd30: add core driver")
> Signed-off-by: Maxwell Doose <m32285159@xxxxxxxxx>
> ---
> drivers/iio/chemical/scd30_core.c | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/drivers/iio/chemical/scd30_core.c b/drivers/iio/chemical/scd30_core.c
> index be8c055be184..3e2bb6f4e42c 100644
> --- a/drivers/iio/chemical/scd30_core.c
> +++ b/drivers/iio/chemical/scd30_core.c
> @@ -237,6 +237,13 @@ static int scd30_read_raw(struct iio_dev *indio_dev, struct iio_chan_spec const
> if (ret)
> return ret;
>
> + /* Likely only taken if something really strange happens */
Instead of saying "strange" I would mention a possible hardware failure
to justify the EIO return. I'm assuming this is reading the value over
SPI or I2C?
> + if (!tmp) {
> + dev_err(&indio_dev->dev,
> + "Invalid measurement interval 0 received\n");
> + return -EIO;
> + }
> +
> *val = 0;
> *val2 = 1000000000 / tmp;
> return IIO_VAL_INT_PLUS_NANO;