iio: adis16475: fix deadlock on frequency set
With commit39c024b51b
("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:39c024b51b
("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>
This commit is contained in:
Родитель
8167c9a375
Коммит
9da1b86865
|
@ -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.
|
||||
|
|
Загрузка…
Ссылка в новой задаче