summaryrefslogtreecommitdiffstats
path: root/drivers/gpio/gpio-vr41xx.c
diff options
context:
space:
mode:
authorLinus Walleij <linus.walleij@linaro.org>2014-07-08 09:22:10 +0200
committerLinus Walleij <linus.walleij@linaro.org>2014-07-09 12:22:54 +0200
commit246a144eed4093befc58e00cf3ba55e647977420 (patch)
tree14b3a30eefd9037232b1ba4f135f32795b6d3e48 /drivers/gpio/gpio-vr41xx.c
parentgpio: rcar: clamp returned value to [0,1] (diff)
downloadlinux-246a144eed4093befc58e00cf3ba55e647977420.tar.xz
linux-246a144eed4093befc58e00cf3ba55e647977420.zip
gpio: vr41xx: fix up errorpath on probe()
The driver was not checking the return value from gpiochip_add() properly, so add a bail-out check. Reported-by: Rickard Strandqvist <rickard_strandqvist@spectrumdigital.se> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Diffstat (limited to 'drivers/gpio/gpio-vr41xx.c')
-rw-r--r--drivers/gpio/gpio-vr41xx.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/gpio/gpio-vr41xx.c b/drivers/gpio/gpio-vr41xx.c
index 66cbcc108e62..dbf28fa03f67 100644
--- a/drivers/gpio/gpio-vr41xx.c
+++ b/drivers/gpio/gpio-vr41xx.c
@@ -515,7 +515,7 @@ static int giu_probe(struct platform_device *pdev)
struct resource *res;
unsigned int trigger, i, pin;
struct irq_chip *chip;
- int irq, retval;
+ int irq, ret;
switch (pdev->id) {
case GPIO_50PINS_PULLUPDOWN:
@@ -544,7 +544,11 @@ static int giu_probe(struct platform_device *pdev)
vr41xx_gpio_chip.dev = &pdev->dev;
- retval = gpiochip_add(&vr41xx_gpio_chip);
+ ret = gpiochip_add(&vr41xx_gpio_chip);
+ if (!ret) {
+ iounmap(giu_base);
+ return -ENODEV;
+ }
giu_write(GIUINTENL, 0);
giu_write(GIUINTENH, 0);