+++ /dev/null
-From 5539b3c938d64a60cb1fc442ac3ce9263d52de0c Mon Sep 17 00:00:00 2001
-From: Johan Hovold <johan@kernel.org>
-Date: Mon, 12 Jan 2015 17:12:24 +0100
-Subject: gpio: fix memory and reference leaks in gpiochip_add error path
-
-From: Johan Hovold <johan@kernel.org>
-
-commit 5539b3c938d64a60cb1fc442ac3ce9263d52de0c upstream.
-
-Memory allocated and references taken by of_gpiochip_add and
-acpi_gpiochip_add were never released on errors in gpiochip_add (e.g.
-failure to find free gpio range).
-
-Fixes: 391c970c0dd1 ("of/gpio: add default of_xlate function if device
-has a node pointer")
-Fixes: 664e3e5ac64c ("gpio / ACPI: register to ACPI events
-automatically")
-
-Signed-off-by: Johan Hovold <johan@kernel.org>
-Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-
----
- drivers/gpio/gpiolib.c | 11 +++++++----
- 1 file changed, 7 insertions(+), 4 deletions(-)
-
---- a/drivers/gpio/gpiolib.c
-+++ b/drivers/gpio/gpiolib.c
-@@ -1214,6 +1214,9 @@ int gpiochip_add(struct gpio_chip *chip)
- }
- }
-
-+ if (status)
-+ goto fail;
-+
- #ifdef CONFIG_PINCTRL
- INIT_LIST_HEAD(&chip->pin_ranges);
- #endif
-@@ -1223,12 +1226,12 @@ int gpiochip_add(struct gpio_chip *chip)
- unlock:
- spin_unlock_irqrestore(&gpio_lock, flags);
-
-- if (status)
-- goto fail;
--
- status = gpiochip_export(chip);
-- if (status)
-+ if (status) {
-+ acpi_gpiochip_remove(chip);
-+ of_gpiochip_remove(chip);
- goto fail;
-+ }
-
- pr_debug("gpiochip_add: registered GPIOs %d to %d on device: %s\n",
- chip->base, chip->base + chip->ngpio - 1,