Fix underflow / overflow for humidity measurements diff --git a/drivers/iio/pressure/bmp280-core.c b/drivers/iio/pressure/bmp280-core.c index 29c209cc1108..d1f36b044f05 100644 --- a/drivers/iio/pressure/bmp280-core.c +++ b/drivers/iio/pressure/bmp280-core.c @@ -270,6 +270,8 @@ static u32 bmp280_compensate_humidity(struct bmp280_data *data, * (((var * (s32)calib->H3) >> 11) + (s32)32768)) >> 10) + (s32)2097152) * calib->H2 + 8192) >> 14); var -= ((((var >> 15) * (var >> 15)) >> 7) * (s32)calib->H1) >> 4; + var = ((var < 0) ? 0 : var); + var = ((var > 419430400) ? 419430400 : var); return var >> 12; };