| From a2b86132955268b2a1703082fbc2d4832fc001b8 Mon Sep 17 00:00:00 2001 |
| From: Fernando Yang <hagisf@usp.br> |
| Date: Mon, 3 Jun 2024 15:07:54 -0300 |
| Subject: iio: adc: ad7266: Fix variable checking bug |
| |
| From: Fernando Yang <hagisf@usp.br> |
| |
| commit a2b86132955268b2a1703082fbc2d4832fc001b8 upstream. |
| |
| The ret variable was not checked after iio_device_release_direct_mode(), |
| which could possibly cause errors |
| |
| Fixes: c70df20e3159 ("iio: adc: ad7266: claim direct mode during sensor read") |
| Signed-off-by: Fernando Yang <hagisf@usp.br> |
| Link: https://lore.kernel.org/r/20240603180757.8560-1-hagisf@usp.br |
| Cc: <Stable@vger.kernel.org> |
| Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/iio/adc/ad7266.c | 2 ++ |
| 1 file changed, 2 insertions(+) |
| |
| --- a/drivers/iio/adc/ad7266.c |
| +++ b/drivers/iio/adc/ad7266.c |
| @@ -157,6 +157,8 @@ static int ad7266_read_raw(struct iio_de |
| ret = ad7266_read_single(st, val, chan->address); |
| iio_device_release_direct_mode(indio_dev); |
| |
| + if (ret < 0) |
| + return ret; |
| *val = (*val >> 2) & 0xfff; |
| if (chan->scan_type.sign == 's') |
| *val = sign_extend32(*val, |