summaryrefslogtreecommitdiffstats
path: root/drivers/of/base.c
diff options
context:
space:
mode:
authorFlorian Fainelli <f.fainelli@gmail.com>2014-05-28 19:39:02 +0200
committerRob Herring <robh@kernel.org>2014-06-04 11:46:01 +0200
commit43cb43678705e39b175b325f17938295996aefc7 (patch)
tree0c238470709c70f60714245816e6437efb0cdef1 /drivers/of/base.c
parentof/irq: provide more wrappers for !CONFIG_OF (diff)
downloadlinux-43cb43678705e39b175b325f17938295996aefc7.tar.xz
linux-43cb43678705e39b175b325f17938295996aefc7.zip
of: handle NULL node in next_child iterators
Add an early check for the node argument in __of_get_next_child and of_get_next_available_child() to avoid dereferencing a NULL node pointer a few lines after. CC: Daniel Mack <zonque@gmail.com> Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: Grant Likely <grant.likely@linaro.org>
Diffstat (limited to '')
-rw-r--r--drivers/of/base.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/of/base.c b/drivers/of/base.c
index e67b308819c9..567e6e1b7921 100644
--- a/drivers/of/base.c
+++ b/drivers/of/base.c
@@ -700,6 +700,9 @@ static struct device_node *__of_get_next_child(const struct device_node *node,
{
struct device_node *next;
+ if (!node)
+ return NULL;
+
next = prev ? prev->sibling : node->child;
for (; next; next = next->sibling)
if (of_node_get(next))
@@ -746,6 +749,9 @@ struct device_node *of_get_next_available_child(const struct device_node *node,
struct device_node *next;
unsigned long flags;
+ if (!node)
+ return NULL;
+
raw_spin_lock_irqsave(&devtree_lock, flags);
next = prev ? prev->sibling : node->child;
for (; next; next = next->sibling) {