iio: adc: rzg2l_adc: Simplify the locking scheme in rzg2l_adc_read_raw()
authorClaudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
Fri, 6 Dec 2024 11:13:29 +0000 (13:13 +0200)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Wed, 11 Dec 2024 19:18:37 +0000 (19:18 +0000)
Simplify the locking scheme in rzg2l_adc_read_raw() by using
guard(mutex)().

Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Link: https://patch.msgid.link/20241206111337.726244-8-claudiu.beznea.uj@bp.renesas.com
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/adc/rzg2l_adc.c

index aa471fb495dcfa63be458e3d8ba998ec75b899d8..7da84224a2924901bb9b8a2b3296de995a6ecd05 100644 (file)
@@ -8,6 +8,7 @@
  */
 
 #include <linux/bitfield.h>
+#include <linux/cleanup.h>
 #include <linux/completion.h>
 #include <linux/delay.h>
 #include <linux/iio/iio.h>
@@ -220,21 +221,21 @@ static int rzg2l_adc_read_raw(struct iio_dev *indio_dev,
        u8 ch;
 
        switch (mask) {
-       case IIO_CHAN_INFO_RAW:
+       case IIO_CHAN_INFO_RAW: {
                if (chan->type != IIO_VOLTAGE)
                        return -EINVAL;
 
-               mutex_lock(&adc->lock);
+               guard(mutex)(&adc->lock);
+
                ch = chan->channel & RZG2L_ADC_CHN_MASK;
                ret = rzg2l_adc_conversion(indio_dev, adc, ch);
-               if (ret) {
-                       mutex_unlock(&adc->lock);
+               if (ret)
                        return ret;
-               }
+
                *val = adc->last_val[ch];
-               mutex_unlock(&adc->lock);
 
                return IIO_VAL_INT;
+       }
 
        default:
                return -EINVAL;