diff mbox

gpio-pisosr: Unlock on error in pisosr_gpio_refresh()

Message ID 20160219215330.GA18915@mwanda
State New
Headers show

Commit Message

Dan Carpenter Feb. 19, 2016, 9:53 p.m. UTC
We should unlock before returning if spi_read() fails.

Fixes: df6df93c8a73 ('gpio: Add driver for SPI serializers')
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>

--
To unsubscribe from this list: send the line "unsubscribe linux-gpio" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Andrew Davis Feb. 19, 2016, 9:57 p.m. UTC | #1
On 02/19/2016 03:53 PM, Dan Carpenter wrote:
> We should unlock before returning if spi_read() fails.
>
> Fixes: df6df93c8a73 ('gpio: Add driver for SPI serializers')
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
>
> diff --git a/drivers/gpio/gpio-pisosr.c b/drivers/gpio/gpio-pisosr.c
> index 58ea08df..f9f1074 100644
> --- a/drivers/gpio/gpio-pisosr.c
> +++ b/drivers/gpio/gpio-pisosr.c
> @@ -53,12 +53,10 @@ static int pisosr_gpio_refresh(struct pisosr_gpio *gpio)
>   	}
>
>   	ret = spi_read(gpio->spi, gpio->buffer, gpio->buffer_size);
> -	if (ret)
> -		return ret;
>
>   	mutex_unlock(&gpio->lock);
>
> -	return 0;
> +	return ret;
>   }
>
>   static int pisosr_gpio_get_direction(struct gpio_chip *chip,
>

This must get flagged by some tool, looks like [0] beat you to it.

Thanks though,
Andrew

[0]http://www.spinics.net/lists/kernel/msg2191913.html
--
To unsubscribe from this list: send the line "unsubscribe linux-gpio" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/gpio/gpio-pisosr.c b/drivers/gpio/gpio-pisosr.c
index 58ea08df..f9f1074 100644
--- a/drivers/gpio/gpio-pisosr.c
+++ b/drivers/gpio/gpio-pisosr.c
@@ -53,12 +53,10 @@  static int pisosr_gpio_refresh(struct pisosr_gpio *gpio)
 	}
 
 	ret = spi_read(gpio->spi, gpio->buffer, gpio->buffer_size);
-	if (ret)
-		return ret;
 
 	mutex_unlock(&gpio->lock);
 
-	return 0;
+	return ret;
 }
 
 static int pisosr_gpio_get_direction(struct gpio_chip *chip,