]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
gpio: viperboard: Unlock on error in vprbrd_gpiob_direction_output()
authorDan Carpenter <dan.carpenter@linaro.org>
Tue, 15 Jul 2025 22:58:34 +0000 (17:58 -0500)
committerBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Wed, 16 Jul 2025 09:02:06 +0000 (11:02 +0200)
Unlock before returning if vprbrd_gpiob_setdir() fails.

Fixes: 55e2d1eec110 ("gpio: viperboard: use new GPIO line value setter callbacks")
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
Link: https://lore.kernel.org/r/9e72018c-e46e-4e55-83e4-503da4d022fc@sabinyo.mountain
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
drivers/gpio/gpio-viperboard.c

index 3eba77f981d3a502b67a0a7cdea51c706d4c3376..e8e906b54d518723519e17a7bc303dd412e1582c 100644 (file)
@@ -378,15 +378,13 @@ static int vprbrd_gpiob_direction_output(struct gpio_chip *chip,
        gpio->gpiob_out |= (1 << offset);
 
        mutex_lock(&vb->lock);
-
        ret = vprbrd_gpiob_setdir(vb, offset, 1);
+       mutex_unlock(&vb->lock);
        if (ret) {
                dev_err(chip->parent, "usb error setting pin to output\n");
                return ret;
        }
 
-       mutex_unlock(&vb->lock);
-
        return vprbrd_gpiob_set(chip, offset, value);
 }