]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
gpio: latch: use lock guards
authorBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Thu, 20 Feb 2025 09:57:09 +0000 (10:57 +0100)
committerBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Wed, 26 Feb 2025 10:17:40 +0000 (11:17 +0100)
Use lock guards from linux/cleanup.h. This will make the subsequent
commit that switches to using value returning GPIO line setters much
simpler as we'll be able to return values without caring about releasing
the locks.

Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Acked-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
Link: https://lore.kernel.org/r/20250220-gpio-set-retval-v2-12-bc4cfd38dae3@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
drivers/gpio/gpio-latch.c

index 64174ea7d0085f0b39c0847c2882634e43bdd7a9..f227966c50d51580c1bac7397aec9183b3290b52 100644 (file)
@@ -38,6 +38,7 @@
  * in the corresponding device tree properties.
  */
 
+#include <linux/cleanup.h>
 #include <linux/err.h>
 #include <linux/gpio/consumer.h>
 #include <linux/gpio/driver.h>
@@ -94,24 +95,19 @@ static void gpio_latch_set_unlocked(struct gpio_latch_priv *priv,
 static void gpio_latch_set(struct gpio_chip *gc, unsigned int offset, int val)
 {
        struct gpio_latch_priv *priv = gpiochip_get_data(gc);
-       unsigned long flags;
 
-       spin_lock_irqsave(&priv->spinlock, flags);
+       guard(spinlock_irqsave)(&priv->spinlock);
 
        gpio_latch_set_unlocked(priv, gpiod_set_value, offset, val);
-
-       spin_unlock_irqrestore(&priv->spinlock, flags);
 }
 
 static void gpio_latch_set_can_sleep(struct gpio_chip *gc, unsigned int offset, int val)
 {
        struct gpio_latch_priv *priv = gpiochip_get_data(gc);
 
-       mutex_lock(&priv->mutex);
+       guard(mutex)(&priv->mutex);
 
        gpio_latch_set_unlocked(priv, gpiod_set_value_cansleep, offset, val);
-
-       mutex_unlock(&priv->mutex);
 }
 
 static bool gpio_latch_can_sleep(struct gpio_latch_priv *priv, unsigned int n_latches)