[PATCH v2] iio: dac: m62332: Use guard(mutex) for locking
Erick Henrique
erick.henrique.rodrigues em usp.br
Qua Abr 15 19:56:35 -03 2026
Replace mutex_lock()/mutex_unlock() calls with guard(mutex)() to
simplify locking and make cleanup automatic when the lock goes out
of scope.
Signed-off-by: Erick Henrique <erick.henrique.rodrigues em usp.br>
---
v2: split combined condition in i2c_master_send error handling
into two separate early returns
---
drivers/iio/dac/m62332.c | 16 +++++-----------
1 file changed, 5 insertions(+), 11 deletions(-)
diff --git a/drivers/iio/dac/m62332.c b/drivers/iio/dac/m62332.c
index 3497513854d7..4cf06e50c1ec 100644
--- a/drivers/iio/dac/m62332.c
+++ b/drivers/iio/dac/m62332.c
@@ -41,33 +41,27 @@ static int m62332_set_value(struct iio_dev *indio_dev, u8 val, int channel)
outbuf[0] = channel;
outbuf[1] = val;
- mutex_lock(&data->mutex);
+ guard(mutex)(&data->mutex);
if (val) {
res = regulator_enable(data->vcc);
if (res)
- goto out;
+ return res;
}
res = i2c_master_send(client, outbuf, ARRAY_SIZE(outbuf));
- if (res >= 0 && res != ARRAY_SIZE(outbuf))
- res = -EIO;
if (res < 0)
- goto out;
+ return res;
+ if (res != ARRAY_SIZE(outbuf))
+ return -EIO;
data->raw[channel] = val;
if (!val)
regulator_disable(data->vcc);
- mutex_unlock(&data->mutex);
-
return 0;
-out:
- mutex_unlock(&data->mutex);
-
- return res;
}
static int m62332_read_raw(struct iio_dev *indio_dev,
--
2.51.0
Mais detalhes sobre a lista de discussão kernel