OSDN Git Service

gpio: siox: Do not call gpiochip_remove() on errorpath
authorLinus Walleij <linus.walleij@linaro.org>
Wed, 26 Jun 2019 08:09:00 +0000 (10:09 +0200)
committerLinus Walleij <linus.walleij@linaro.org>
Thu, 27 Jun 2019 14:56:52 +0000 (15:56 +0100)
gpiochip_remove() was called on the errorpath if
gpiochip_add() failed: this is wrong, if the chip failed
to add it is not there so it should not be removed.

Fixes: be8c8facc707 ("gpio: new driver to work with a 8x12 siox")
Acked-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/gpio/gpio-siox.c

index fb4e318..0b44501 100644 (file)
@@ -243,17 +243,14 @@ static int gpio_siox_probe(struct siox_device *sdevice)
        if (ret) {
                dev_err(&sdevice->dev,
                        "Failed to register gpio chip (%d)\n", ret);
-               goto err_gpiochip;
+               return ret;
        }
 
        ret = gpiochip_irqchip_add(&ddata->gchip, &ddata->ichip,
                                   0, handle_level_irq, IRQ_TYPE_EDGE_RISING);
-       if (ret) {
+       if (ret)
                dev_err(&sdevice->dev,
                        "Failed to register irq chip (%d)\n", ret);
-err_gpiochip:
-               gpiochip_remove(&ddata->gchip);
-       }
 
        return ret;
 }