On Thu, 25 Apr 2024 01:22:49 -0500 Adam Rizkalla <ajarizzo@xxxxxxxxx> wrote: > Fix overflow issue when storing BMP580 temperature reading and > properly preserve sign of 24-bit data. > > Signed-off-by: Adam Rizkalla <ajarizzo@xxxxxxxxx> Hi Adam, Looks like a correct fix to me, but leaving on list a little longer for Angel to take a look. Thanks, Jonathan > --- > drivers/iio/pressure/bmp280-core.c | 10 +++++----- > 1 file changed, 5 insertions(+), 5 deletions(-) > > diff --git a/drivers/iio/pressure/bmp280-core.c b/drivers/iio/pressure/bmp280-core.c > index fe8734468ed3..e79c9715bb28 100644 > --- a/drivers/iio/pressure/bmp280-core.c > +++ b/drivers/iio/pressure/bmp280-core.c > @@ -1393,12 +1393,12 @@ static int bmp580_read_temp(struct bmp280_data *data, int *val, int *val2) > > /* > * Temperature is returned in Celsius degrees in fractional > - * form down 2^16. We rescale by x1000 to return milli Celsius > - * to respect IIO ABI. > + * form down 2^16. We rescale by x1000 to return millidegrees > + * Celsius to respect IIO ABI. > */ > - *val = raw_temp * 1000; > - *val2 = 16; > - return IIO_VAL_FRACTIONAL_LOG2; > + raw_temp = sign_extend32(raw_temp, 23); > + *val = ((s64)raw_temp * 1000) / (1 << 16); > + return IIO_VAL_INT; > } > > static int bmp580_read_press(struct bmp280_data *data, int *val, int *val2)