summaryrefslogtreecommitdiffstats
path: root/drivers/iio/imu
diff options
context:
space:
mode:
authorNuno Sá <nuno.sa@analog.com>2021-09-20 11:00:47 +0200
committerJonathan Cameron <Jonathan.Cameron@huawei.com>2021-09-25 16:01:06 +0100
commit9da1b86865ab4376408c58cd9fec332c8bdb5c73 (patch)
tree460c9bf2cec6325e9682cbbcdf568e167fc62062 /drivers/iio/imu
parent8167c9a375ccceed19048ad9d68cb2d02ed276e0 (diff)
downloadlinux-9da1b86865ab4376408c58cd9fec332c8bdb5c73.tar.gz
linux-9da1b86865ab4376408c58cd9fec332c8bdb5c73.tar.bz2
linux-9da1b86865ab4376408c58cd9fec332c8bdb5c73.zip
iio: adis16475: fix deadlock on frequency set
With commit 39c024b51b560 ("iio: adis16475: improve sync scale mode handling"), two deadlocks were introduced: 1) The call to 'adis_write_reg_16()' was not changed to it's unlocked version. 2) The lock was not being released on the success path of the function. This change fixes both these issues. Fixes: 39c024b51b560 ("iio: adis16475: improve sync scale mode handling") Signed-off-by: Nuno Sá <nuno.sa@analog.com> Reviewed-by: Alexandru Ardelean <ardeleanalex@gmail.com> Link: https://lore.kernel.org/r/20210920090047.74903-1-nuno.sa@analog.com Cc: <Stable@vger.kernel.org> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Diffstat (limited to 'drivers/iio/imu')
-rw-r--r--drivers/iio/imu/adis16475.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/iio/imu/adis16475.c b/drivers/iio/imu/adis16475.c
index eb48102f9424..287fff39a927 100644
--- a/drivers/iio/imu/adis16475.c
+++ b/drivers/iio/imu/adis16475.c
@@ -353,10 +353,11 @@ static int adis16475_set_freq(struct adis16475 *st, const u32 freq)
if (dec > st->info->max_dec)
dec = st->info->max_dec;
- ret = adis_write_reg_16(&st->adis, ADIS16475_REG_DEC_RATE, dec);
+ ret = __adis_write_reg_16(&st->adis, ADIS16475_REG_DEC_RATE, dec);
if (ret)
goto error;
+ adis_dev_unlock(&st->adis);
/*
* If decimation is used, then gyro and accel data will have meaningful
* bits on the LSB registers. This info is used on the trigger handler.