[PATCH v1 08/15] iio: adc: ad7768-1: use guard(mutex) to simplify code
From: Jonathan Santos
Date: Tue Jan 07 2025 - 10:26:43 EST
Use guard(mutex) from cleanup.h to remove most of the gotos and to make
the code simpler and less likely to fail due to forgetting to unlock
the resources.
Signed-off-by: Jonathan Santos <Jonathan.Santos@xxxxxxxxxx>
---
drivers/iio/adc/ad7768-1.c | 20 ++++++--------------
1 file changed, 6 insertions(+), 14 deletions(-)
diff --git a/drivers/iio/adc/ad7768-1.c b/drivers/iio/adc/ad7768-1.c
index f73b9aec8b0f..cd1b08053105 100644
--- a/drivers/iio/adc/ad7768-1.c
+++ b/drivers/iio/adc/ad7768-1.c
@@ -5,6 +5,7 @@
* Copyright 2017 Analog Devices Inc.
*/
#include <linux/bitfield.h>
+#include <linux/cleanup.h>
#include <linux/clk.h>
#include <linux/delay.h>
#include <linux/device.h>
@@ -257,20 +258,12 @@ static int ad7768_reg_access(struct iio_dev *indio_dev,
unsigned int *readval)
{
struct ad7768_state *st = iio_priv(indio_dev);
- int ret;
- mutex_lock(&st->lock);
- if (readval) {
- ret = ad7768_spi_reg_read(st, reg, readval, 1);
- if (ret < 0)
- goto err_unlock;
- } else {
- ret = ad7768_spi_reg_write(st, reg, writeval);
- }
-err_unlock:
- mutex_unlock(&st->lock);
+ guard(mutex)(&st->lock);
+ if (readval)
+ return ad7768_spi_reg_read(st, reg, readval, 1);
- return ret;
+ return ad7768_spi_reg_write(st, reg, writeval);
}
static int ad7768_set_dig_fil(struct ad7768_state *st,
@@ -484,7 +477,7 @@ static irqreturn_t ad7768_trigger_handler(int irq, void *p)
struct ad7768_state *st = iio_priv(indio_dev);
int ret;
- mutex_lock(&st->lock);
+ guard(mutex)(&st->lock);
ret = spi_read(st->spi, &st->data.scan.chan, 3);
if (ret < 0)
@@ -495,7 +488,6 @@ static irqreturn_t ad7768_trigger_handler(int irq, void *p)
err_unlock:
iio_trigger_notify_done(indio_dev->trig);
- mutex_unlock(&st->lock);
return IRQ_HANDLED;
}
--
2.34.1