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

Rajveer Chaudhari posted 3 patches 1 month ago
There is a newer version of this series
[PATCH v3 3/3] iio: accel: adxl372: convert to guard(mutex)
Posted by Rajveer Chaudhari 1 month ago
Replace manual mutex_lock/mutex_unlock pair with guard(mutex) in
adxl372_write_threshold_value(). Remove goto label and return
directly on error path.

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

Signed-off-by: Rajveer Chaudhari <rajveer.chaudhari.linux@gmail.com>
---
 drivers/iio/accel/adxl372.c | 16 ++++++----------
 1 file changed, 6 insertions(+), 10 deletions(-)

diff --git a/drivers/iio/accel/adxl372.c b/drivers/iio/accel/adxl372.c
index 28a8793a53b6..340433782cf2 100644
--- a/drivers/iio/accel/adxl372.c
+++ b/drivers/iio/accel/adxl372.c
@@ -7,6 +7,7 @@
 
 #include <linux/bitfield.h>
 #include <linux/bitops.h>
+#include <linux/cleanup.h>
 #include <linux/interrupt.h>
 #include <linux/irq.h>
 #include <linux/module.h>
@@ -334,20 +335,15 @@ static ssize_t adxl372_write_threshold_value(struct iio_dev *indio_dev, unsigned
 					     u16 threshold)
 {
 	struct adxl372_state *st = iio_priv(indio_dev);
-	int ret;
 
-	mutex_lock(&st->threshold_m);
-	ret = regmap_write(st->regmap, addr, ADXL372_THRESH_VAL_H_SEL(threshold));
+	guard(mutex)(&st->threshold_m);
+	
+	int ret = regmap_write(st->regmap, addr, ADXL372_THRESH_VAL_H_SEL(threshold));
 	if (ret < 0)
-		goto unlock;
+		return ret;
 
-	ret = regmap_update_bits(st->regmap, addr + 1, GENMASK(7, 5),
+	return regmap_update_bits(st->regmap, addr + 1, GENMASK(7, 5),
 				 ADXL372_THRESH_VAL_L_SEL(threshold) << 5);
-
-unlock:
-	mutex_unlock(&st->threshold_m);
-
-	return ret;
 }
 
 static int adxl372_read_axis(struct adxl372_state *st, u8 addr)
-- 
2.53.0
Re: [PATCH v3 3/3] iio: accel: adxl372: convert to guard(mutex)
Posted by Jonathan Cameron 1 month ago
On Sat,  7 Mar 2026 15:47:58 +0530
Rajveer Chaudhari <rajveer.chaudhari.linux@gmail.com> wrote:

> Replace manual mutex_lock/mutex_unlock pair with guard(mutex) in
> adxl372_write_threshold_value(). Remove goto label and return
> directly on error path.
> 
> v3: Return directly from error path without goto.
> v2: Split into separate patch per driver.
As in previous, this needs to move down.
Otherwise this patch is fine.

Thanks,

Jonathan

> 
> Signed-off-by: Rajveer Chaudhari <rajveer.chaudhari.linux@gmail.com>
> ---
>  drivers/iio/accel/adxl372.c | 16 ++++++----------
>  1 file changed, 6 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/iio/accel/adxl372.c b/drivers/iio/accel/adxl372.c
> index 28a8793a53b6..340433782cf2 100644
> --- a/drivers/iio/accel/adxl372.c
> +++ b/drivers/iio/accel/adxl372.c
> @@ -7,6 +7,7 @@
>  
>  #include <linux/bitfield.h>
>  #include <linux/bitops.h>
> +#include <linux/cleanup.h>
>  #include <linux/interrupt.h>
>  #include <linux/irq.h>
>  #include <linux/module.h>
> @@ -334,20 +335,15 @@ static ssize_t adxl372_write_threshold_value(struct iio_dev *indio_dev, unsigned
>  					     u16 threshold)
>  {
>  	struct adxl372_state *st = iio_priv(indio_dev);
> -	int ret;
>  
> -	mutex_lock(&st->threshold_m);
> -	ret = regmap_write(st->regmap, addr, ADXL372_THRESH_VAL_H_SEL(threshold));
> +	guard(mutex)(&st->threshold_m);
> +	
> +	int ret = regmap_write(st->regmap, addr, ADXL372_THRESH_VAL_H_SEL(threshold));
>  	if (ret < 0)
> -		goto unlock;
> +		return ret;
>  
> -	ret = regmap_update_bits(st->regmap, addr + 1, GENMASK(7, 5),
> +	return regmap_update_bits(st->regmap, addr + 1, GENMASK(7, 5),
>  				 ADXL372_THRESH_VAL_L_SEL(threshold) << 5);
> -
> -unlock:
> -	mutex_unlock(&st->threshold_m);
> -
> -	return ret;
>  }
>  
>  static int adxl372_read_axis(struct adxl372_state *st, u8 addr)