From: Dan Carpenter Date: Tue, 15 Jul 2025 22:58:34 +0000 (-0500) Subject: gpio: viperboard: Unlock on error in vprbrd_gpiob_direction_output() X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5103fbb7b59f7a078284a345d82bdab0f0ee6d08;p=thirdparty%2Fkernel%2Flinux.git gpio: viperboard: Unlock on error in vprbrd_gpiob_direction_output() Unlock before returning if vprbrd_gpiob_setdir() fails. Fixes: 55e2d1eec110 ("gpio: viperboard: use new GPIO line value setter callbacks") Signed-off-by: Dan Carpenter Link: https://lore.kernel.org/r/9e72018c-e46e-4e55-83e4-503da4d022fc@sabinyo.mountain Signed-off-by: Bartosz Golaszewski --- diff --git a/drivers/gpio/gpio-viperboard.c b/drivers/gpio/gpio-viperboard.c index 3eba77f981d3a..e8e906b54d518 100644 --- a/drivers/gpio/gpio-viperboard.c +++ b/drivers/gpio/gpio-viperboard.c @@ -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); }