On Wed, Jan 08, 2025 at 12:37:22PM +0300, Dan Carpenter wrote: > The bme680_read_temp() function takes a pointer to s16 but we're passing > an int pointer to it. This will not work on big endian systems and it > also means that the other 16 bits are uninitialized. > > Pass an s16 type variable. > > Fixes: f51171ce2236 ("iio: chemical: bme680: Add SCALE and RAW channels") > Signed-off-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> > --- > drivers/iio/chemical/bme680_core.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/iio/chemical/bme680_core.c b/drivers/iio/chemical/bme680_core.c > index 26eb0fa77a43..9d73fd2cf52c 100644 > --- a/drivers/iio/chemical/bme680_core.c > +++ b/drivers/iio/chemical/bme680_core.c > @@ -879,11 +879,11 @@ static int __bme680_read_raw(struct iio_dev *indio_dev, > case IIO_CHAN_INFO_RAW: > switch (chan->type) { > case IIO_TEMP: > - ret = bme680_read_temp(data, (s16 *)&chan_val); > + ret = bme680_read_temp(data, &temp_chan_val); > if (ret) > return ret; > > - *val = chan_val; > + *val = temp_chan_val; > return IIO_VAL_INT; > case IIO_PRESSURE: > ret = bme680_read_press(data, &chan_val); > -- > 2.45.2 > Acked-by: Vasileios Amoiridis <vassilisamir@xxxxxxxxx> Hi Dan, I had already applied this for IIO_CHAN_INFO_PROCESSED but not for the IIO_CHAN_INFO_RAW channel... Very good that you spotted it! Cheers, Vasilis