Re: [PATCH] iio: light: iqs621-als: use lock guards

Andy Shevchenko
2026-04-20T08:45:51Z

On Sun, Apr 19, 2026 at 06:31:23PM -0300, Pedro Barletta Gennari wrote:
> Use guard(mutex)() for handling mutex lock instead of
> manually locking and unlocking the mutex. This prevents forgotten
> locks due to early exits and remove the need of gotos.

...

> @@ -15,6 +15,7 @@
> #include <linux/notifier.h>
> #include <linux/platform_device.h>
> #include <linux/regmap.h>
> +#include <linux/cleanup.h>

Keep the list ordered.

...

> ret = iqs621_als_init(iqs621_als);
> if (ret) {
> dev_err(indio_dev->dev.parent,
> "Failed to re-initialize device: %d\n", ret);
> - ret = NOTIFY_BAD;
> + return NOTIFY_BAD;
> } else {

Now 'else' is redundant.

> - ret = NOTIFY_OK;
> + return NOTIFY_OK;
> }
> -
> - goto err_mutex;

...

> struct iqs621_als_private *iqs621_als = iio_priv(indio_dev);

> int ret = IIO_VAL_INT;

Drop it, use the value explicitly inline in each of the cases below.

>
> - mutex_lock(&iqs621_als->lock);
> + guard(mutex)(&iqs621_als->lock);
>
> switch (dir) {
> case IIO_EV_DIR_RISING:
> *val = iqs621_als->thresh_light * 16;
> - break;
> + return ret;
>
> case IIO_EV_DIR_FALLING:
> *val = iqs621_als->thresh_dark * 4;
> - break;
> + return ret;
>
> case IIO_EV_DIR_EITHER:
> if (iqs621_als->ir_flags_mask == IQS622_IR_FLAGS_TOUCH)
> *val = iqs621_als->thresh_prox * 4;
> else
> *val = iqs621_als->thresh_prox;
> - break;
> + return ret;
>
> default:
> - ret = -EINVAL;
> + return -EINVAL;
> }

--
With Best Regards,
Andy Shevchenko