From 8c27384c580f2b6375875ea6ae330c4c868bb80b Mon Sep 17 00:00:00 2001 From: Puneet Yatnal Date: Wed, 8 Apr 2020 21:43:34 +0530 Subject: [PATCH] drivers: iio: imu: Moved mutex lock after return function The mutex lock will be in dead lock condition if early buffer flag is true , to avoid that moved mutex lock after return function. Change-Id: Ie043091533cf670494418467af5d3770e4f2471d Signed-off-by: Puneet Yatnal --- drivers/iio/imu/inv_mpu/inv_mpu_ring.c | 5 ++--- drivers/iio/imu/st_asm330lhh/st_asm330lhh_buffer.c | 2 +- drivers/input/sensors/smi130/smi130_acc.c | 2 +- drivers/input/sensors/smi130/smi130_gyro_driver.c | 2 +- 4 files changed, 5 insertions(+), 6 deletions(-) diff --git a/drivers/iio/imu/inv_mpu/inv_mpu_ring.c b/drivers/iio/imu/inv_mpu/inv_mpu_ring.c index 8b1c06713ead..be6fa4861539 100644 --- a/drivers/iio/imu/inv_mpu/inv_mpu_ring.c +++ b/drivers/iio/imu/inv_mpu/inv_mpu_ring.c @@ -301,9 +301,9 @@ void inv_convert_and_push_8bytes(struct inv_mpu_state *st, u16 hdr, static void store_acc_boot_sample(struct inv_mpu_state *st, u64 t, s16 x, s16 y, s16 z) { - mutex_lock(&st->acc_sensor_buff); if (false == st->acc_buffer_inv_samples) return; + mutex_lock(&st->acc_sensor_buff); st->timestamp.tv64 = t; if (ktime_to_timespec(st->timestamp).tv_sec < st->max_buffer_time) { @@ -334,10 +334,9 @@ static void store_acc_boot_sample(struct inv_mpu_state *st, u64 t, static void store_gyro_boot_sample(struct inv_mpu_state *st, u64 t, s16 x, s16 y, s16 z) { - - mutex_lock(&st->gyro_sensor_buff); if (false == st->gyro_buffer_inv_samples) return; + mutex_lock(&st->gyro_sensor_buff); st->timestamp.tv64 = t; if (ktime_to_timespec(st->timestamp).tv_sec < st->max_buffer_time) { diff --git a/drivers/iio/imu/st_asm330lhh/st_asm330lhh_buffer.c b/drivers/iio/imu/st_asm330lhh/st_asm330lhh_buffer.c index 32937e1f5bde..b8b3effd5aea 100644 --- a/drivers/iio/imu/st_asm330lhh/st_asm330lhh_buffer.c +++ b/drivers/iio/imu/st_asm330lhh/st_asm330lhh_buffer.c @@ -200,10 +200,10 @@ static void store_acc_gyro_boot_sample(struct st_asm330lhh_sensor *sensor, { int x, y, z; - mutex_lock(&sensor->sensor_buff); if (false == sensor->buffer_asm_samples) return; + mutex_lock(&sensor->sensor_buff); sensor->timestamp = (ktime_t)tsample; x = iio_buf[1]<<8|iio_buf[0]; y = iio_buf[3]<<8|iio_buf[2]; diff --git a/drivers/input/sensors/smi130/smi130_acc.c b/drivers/input/sensors/smi130/smi130_acc.c index 27bcf581b1a0..3a667a0709b7 100644 --- a/drivers/input/sensors/smi130/smi130_acc.c +++ b/drivers/input/sensors/smi130/smi130_acc.c @@ -6965,9 +6965,9 @@ static void smi130_acc_slope_interrupt_handle(struct smi130_acc_data *smi130_acc static void store_acc_boot_sample(struct smi130_acc_data *client_data, int x, int y, int z, struct timespec ts) { - mutex_lock(&client_data->acc_sensor_buff); if (false == client_data->acc_buffer_smi130_samples) return; + mutex_lock(&client_data->acc_sensor_buff); if (ts.tv_sec < client_data->max_buffer_time) { if (client_data->acc_bufsample_cnt < SMI_ACC_MAXSAMPLE) { client_data->smi130_acc_samplist[client_data-> diff --git a/drivers/input/sensors/smi130/smi130_gyro_driver.c b/drivers/input/sensors/smi130/smi130_gyro_driver.c index 51f55a4a9e98..61b59339b7b5 100644 --- a/drivers/input/sensors/smi130/smi130_gyro_driver.c +++ b/drivers/input/sensors/smi130/smi130_gyro_driver.c @@ -1741,9 +1741,9 @@ static void smi_gyro_input_destroy(struct smi_gyro_client_data *client_data) static void store_gyro_boot_sample(struct smi_gyro_client_data *client_data, int x, int y, int z, struct timespec ts) { - mutex_lock(&client_data->gyro_sensor_buff); if (false == client_data->gyro_buffer_smi130_samples) return; + mutex_lock(&client_data->gyro_sensor_buff); if (ts.tv_sec < client_data->max_buffer_time) { if (client_data->gyro_bufsample_cnt < SMI_GYRO_MAXSAMPLE) { client_data->smi130_gyro_samplist[client_data->