[PATCH v3 1/3] iio: accel: adxl313: convert to guard(mutex)

From: Rajveer Chaudhari

Date: Sat Mar 07 2026 - 05:18:50 EST


Replace manual mutex_lock/mutex_unlock pair with guard(mutex) in
adxl313_read_axis(). This ensures the mutex is released on all
return paths and allows returning directly without a goto label.

v3: Return directly from regmap_bulk_read error path.
v2: Split into separate patch per driver.

Signed-off-by: Rajveer Chaudhari <rajveer.chaudhari.linux@xxxxxxxxx>
---
drivers/iio/accel/adxl313_core.c | 15 +++++----------
1 file changed, 5 insertions(+), 10 deletions(-)

diff --git a/drivers/iio/accel/adxl313_core.c b/drivers/iio/accel/adxl313_core.c
index 9f5d4d2cb325..40f62c6f89b4 100644
--- a/drivers/iio/accel/adxl313_core.c
+++ b/drivers/iio/accel/adxl313_core.c
@@ -8,6 +8,7 @@
*/

#include <linux/bitfield.h>
+#include <linux/cleanup.h>
#include <linux/interrupt.h>
#include <linux/module.h>
#include <linux/overflow.h>
@@ -354,21 +355,15 @@ static int adxl313_set_odr(struct adxl313_data *data,
static int adxl313_read_axis(struct adxl313_data *data,
struct iio_chan_spec const *chan)
{
- int ret;
-
- mutex_lock(&data->lock);
+ guard(mutex)(&data->lock);

- ret = regmap_bulk_read(data->regmap,
+ int ret = regmap_bulk_read(data->regmap,
ADXL313_REG_DATA_AXIS(chan->address),
&data->transf_buf, sizeof(data->transf_buf));
if (ret)
- goto unlock_ret;
-
- ret = le16_to_cpu(data->transf_buf);
+ return ret;

-unlock_ret:
- mutex_unlock(&data->lock);
- return ret;
+ return le16_to_cpu(data->transf_buf);
}

static int adxl313_read_freq_avail(struct iio_dev *indio_dev,
--
2.53.0