]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
gpio: adnp: fix flow control regression caused by scoped_guard()
authorBartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
Fri, 22 May 2026 07:35:27 +0000 (09:35 +0200)
committerBartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
Thu, 28 May 2026 13:23:39 +0000 (15:23 +0200)
scoped_guard() is implemented as a for loop. Using it to protect code
using the continue statement changes the flow as we now only break out
of the hidden loop inside scoped_guard(), not the original for loop. Use
a regular code block instead.

Fixes: c7fe19ed3973 ("gpio: adnp: use lock guards for the I2C lock")
Reported-by: David Lechner <dlechner@baylibre.com>
Closes: https://lore.kernel.org/all/cde2abb2-4cc8-4fc9-b34a-0c5d2b95779f@baylibre.com/
Reviewed-by: Linus Walleij <linusw@kernel.org>
Link: https://patch.msgid.link/20260522073527.9812-1-bartosz.golaszewski@oss.qualcomm.com
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
drivers/gpio/gpio-adnp.c

index e5ac2d2110137f6c48ff6eeb3ee0097f0241cd48..fe5bcaa90496aa52899a2964611eee15130e0fef 100644 (file)
@@ -237,7 +237,9 @@ static irqreturn_t adnp_irq(int irq, void *data)
                unsigned long pending;
                int err;
 
-               scoped_guard(mutex, &adnp->i2c_lock) {
+               {
+                       guard(mutex)(&adnp->i2c_lock);
+
                        err = adnp_read(adnp, GPIO_PLR(adnp) + i, &level);
                        if (err < 0)
                                continue;