summaryrefslogtreecommitdiff
path: root/drivers/of/base.c
diff options
context:
space:
mode:
authorFlorian Fainelli <f.fainelli@gmail.com>2014-05-28 21:39:02 +0400
committerRob Herring <robh@kernel.org>2014-06-04 13:46:01 +0400
commit43cb43678705e39b175b325f17938295996aefc7 (patch)
tree0c238470709c70f60714245816e6437efb0cdef1 /drivers/of/base.c
parent64c5c759084e153272eb05f4103de3e0adf5a88a (diff)
downloadlinux-43cb43678705e39b175b325f17938295996aefc7.tar.xz
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 'drivers/of/base.c')
-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) {