| From 65afb0932a81c1de719ceee0db0b276094b10ac8 Mon Sep 17 00:00:00 2001 |
| From: Alexandru Ardelean <alexandru.ardelean@analog.com> |
| Date: Mon, 6 Jul 2020 14:02:57 +0300 |
| Subject: [PATCH] iio: dac: ad5592r: fix unbalanced mutex unlocks in |
| ad5592r_read_raw() |
| |
| commit 65afb0932a81c1de719ceee0db0b276094b10ac8 upstream. |
| |
| There are 2 exit paths where the lock isn't held, but try to unlock the |
| mutex when exiting. In these places we should just return from the |
| function. |
| |
| A neater approach would be to cleanup the ad5592r_read_raw(), but that |
| would make this patch more difficult to backport to stable versions. |
| |
| Fixes 56ca9db862bf3: ("iio: dac: Add support for the AD5592R/AD5593R ADCs/DACs") |
| Reported-by: Charles Stanhope <charles.stanhope@gmail.com> |
| Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com> |
| Cc: <Stable@vger.kernel.org> |
| Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> |
| |
| diff --git a/drivers/iio/dac/ad5592r-base.c b/drivers/iio/dac/ad5592r-base.c |
| index 5c4e5ff70380..cc4875660a69 100644 |
| --- a/drivers/iio/dac/ad5592r-base.c |
| +++ b/drivers/iio/dac/ad5592r-base.c |
| @@ -413,7 +413,7 @@ static int ad5592r_read_raw(struct iio_dev *iio_dev, |
| s64 tmp = *val * (3767897513LL / 25LL); |
| *val = div_s64_rem(tmp, 1000000000LL, val2); |
| |
| - ret = IIO_VAL_INT_PLUS_MICRO; |
| + return IIO_VAL_INT_PLUS_MICRO; |
| } else { |
| int mult; |
| |
| @@ -444,7 +444,7 @@ static int ad5592r_read_raw(struct iio_dev *iio_dev, |
| ret = IIO_VAL_INT; |
| break; |
| default: |
| - ret = -EINVAL; |
| + return -EINVAL; |
| } |
| |
| unlock: |
| -- |
| 2.27.0 |
| |