From 5103fbb7b59f7a078284a345d82bdab0f0ee6d08 Mon Sep 17 00:00:00 2001 From: Dan Carpenter Date: Tue, 15 Jul 2025 17:58:34 -0500 Subject: [PATCH] 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 --- drivers/gpio/gpio-viperboard.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) 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); } -- 2.47.2