summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWei Yongjun <weiyongjun1@huawei.com>2016-10-29 16:13:52 +0000
committerLinus Walleij <linus.walleij@linaro.org>2016-10-31 09:23:45 +0100
commit09e258af4edaa10ee9aa3164923ee07d5863d637 (patch)
tree0c4c25acd576b2e9297c7fb2c6a798f09ed7a396
parent550a9532b8093ef554947e5d24b469ffb1ff9930 (diff)
downloadlinux-stable-09e258af4edaa10ee9aa3164923ee07d5863d637.tar.gz
linux-stable-09e258af4edaa10ee9aa3164923ee07d5863d637.tar.bz2
linux-stable-09e258af4edaa10ee9aa3164923ee07d5863d637.zip
gpio: of: add missing of_node_put() in of_gpiochip_scan_gpios()
When terminating for_each_available_child_of_node() iteration with break or return, of_node_put() should be used to prevent stale device node references from being left behind. This is detected by Coccinelle semantic patch. Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com> Reviewed-by: Vladimir Zapolskiy <vladimir_zapolskiy@mentor.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
-rw-r--r--drivers/gpio/gpiolib-of.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/gpio/gpiolib-of.c b/drivers/gpio/gpiolib-of.c
index 3fa4e84b4327..5236966b1bdf 100644
--- a/drivers/gpio/gpiolib-of.c
+++ b/drivers/gpio/gpiolib-of.c
@@ -247,8 +247,10 @@ static int of_gpiochip_scan_gpios(struct gpio_chip *chip)
continue;
ret = gpiod_hog(desc, name, lflags, dflags);
- if (ret < 0)
+ if (ret < 0) {
+ of_node_put(np);
return ret;
+ }
}
return 0;