mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 11:26:02 +09:00
iio: imu: lsm6dsr: fix deadlock on resume
The sequence of hw->lock and hw->page_lock in st_lsm6dsr_update_watermark and st_lsm6dsr_fsm_init are in reverse, which may results in deadlock. The fifo water mark is held by iio_dev->mlock, Remove hw->lock in st_lsm6dsr_update_watermark. Signed-off-by: Jason Zhang <jason.zhang@rock-chips.com> Change-Id: I9a1f60cf0ba4444f285ecb95fb37745fbf45e609
This commit is contained in:
@@ -225,8 +225,6 @@ int st_lsm6dsr_update_watermark(struct st_lsm6dsr_sensor *sensor,
|
||||
|
||||
fifo_watermark = max_t(u16, fifo_watermark, 2);
|
||||
|
||||
mutex_lock(&hw->lock);
|
||||
|
||||
err = st_lsm6dsr_read_atomic(hw, ST_LSM6DSR_REG_FIFO_CTRL1_ADDR + 1,
|
||||
sizeof(data), &data);
|
||||
if (err < 0)
|
||||
@@ -238,8 +236,6 @@ int st_lsm6dsr_update_watermark(struct st_lsm6dsr_sensor *sensor,
|
||||
err = st_lsm6dsr_write_atomic(hw, ST_LSM6DSR_REG_FIFO_CTRL1_ADDR,
|
||||
sizeof(wdata), (u8 *)&wdata);
|
||||
out:
|
||||
mutex_unlock(&hw->lock);
|
||||
|
||||
return err < 0 ? err : 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user