> The enable_mask struct member keeps track of which sensors are enabled in > the IMU. When enabling and disabling the sensor fusion functionality, the > driver does not properly update this struct member. This prevents a correct > calculation of the number of samples that should be read from the hardware > FIFO; as a result, reads from the FIFO can be unnecessarily split into > multiple transactions, some of which can read past the FIFO length. Acked-by: Lorenzo Bianconi > > Fixes: cd4e1141bff8 ("iio: imu: st_lsm6dsx: Add support for rotation sensor") > Signed-off-by: Francesco Lavra > --- > drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_fusion.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_fusion.c b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_fusion.c > index 2e72c7ba94dd..5321033daebc 100644 > --- a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_fusion.c > +++ b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_fusion.c > @@ -112,6 +112,11 @@ int st_lsm6dsx_fusion_set_enable(struct st_lsm6dsx_sensor *sensor, bool enable) > return err; > } > > + if (enable) > + hw->enable_mask |= BIT(ST_LSM6DSX_ID_FUSION); > + else > + hw->enable_mask &= ~BIT(ST_LSM6DSX_ID_FUSION); > + > return st_lsm6dsx_fusion_page_disable(hw); > } > > -- > 2.39.5 >