diff options
author | Linus Walleij <linus.walleij@linaro.org> | 2014-07-08 09:22:10 +0200 |
---|---|---|
committer | Linus Walleij <linus.walleij@linaro.org> | 2014-07-09 12:22:54 +0200 |
commit | 246a144eed4093befc58e00cf3ba55e647977420 (patch) | |
tree | 14b3a30eefd9037232b1ba4f135f32795b6d3e48 /drivers/gpio/gpio-vr41xx.c | |
parent | 7cb5409b10d9f8316ca2539591acb6a5f7fd4139 (diff) | |
download | lwn-246a144eed4093befc58e00cf3ba55e647977420.tar.gz lwn-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.c | 8 |
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); |