summaryrefslogtreecommitdiffstats
path: root/drivers/gpio/gpiolib.c
diff options
context:
space:
mode:
authorAaro Koskinen <aaro.koskinen@nokia.com>2010-12-22 02:24:22 +0100
committerLinus Torvalds <torvalds@linux-foundation.org>2010-12-23 04:43:33 +0100
commite254811c205ec539b648cff54a7852ee8dcd2e5e (patch)
treeae6a382b424192053dbc1de6a9ee818262e1966b /drivers/gpio/gpiolib.c
parentwriteback: do uninterruptible sleep in balance_dirty_pages() (diff)
downloadlinux-e254811c205ec539b648cff54a7852ee8dcd2e5e.tar.xz
linux-e254811c205ec539b648cff54a7852ee8dcd2e5e.zip
gpiolib: gpio_request_one(): add missing gpio_free()
If GPIO request succeeds, but configuration fails, it should be released. Signed-off-by: Aaro Koskinen <aaro.koskinen@nokia.com> Acked-by: Eric Miao <eric.miao@canonical.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/gpio/gpiolib.c')
-rw-r--r--drivers/gpio/gpiolib.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
index 21da9c19a0cb..649550e2cae9 100644
--- a/drivers/gpio/gpiolib.c
+++ b/drivers/gpio/gpiolib.c
@@ -1281,6 +1281,9 @@ int gpio_request_one(unsigned gpio, unsigned long flags, const char *label)
err = gpio_direction_output(gpio,
(flags & GPIOF_INIT_HIGH) ? 1 : 0);
+ if (err)
+ gpio_free(gpio);
+
return err;
}
EXPORT_SYMBOL_GPL(gpio_request_one);