Commit c3050a5a authored by Armando Visconti's avatar Armando Visconti Committed by Christopher Friedt
Browse files

drivers/sensor: lps22hh: Fix int32 overflow in the val2 part



The val2 calculation was done using (1000000 / 40960) as
multiplying factor, which was sometimes leading to a
int32 overflow. So, let's use the equivalent (but smaller)
(3125 / 128).

Fix #38090

Signed-off-by: default avatarArmando Visconti <armando.visconti@st.com>
parent 55913572
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -62,7 +62,11 @@ static inline void lps22hh_press_convert(struct sensor_value *val,
	/* Also convert hPa into kPa */

	val->val1 = press_tmp / 40960;
	val->val2 = (press_tmp % 40960) * 1000000 / 40960;

	/* For the decimal part use (3125 / 128) as a factor instead of
	 * (1000000 / 40960) to avoid int32 overflow
	 */
	val->val2 = (press_tmp % 40960) * 3125 / 128;
}

static inline void lps22hh_temp_convert(struct sensor_value *val,