of: Make sure attached nodes don't carry along extra children
authorGrant Likely <grant.likely@linaro.org>
Wed, 16 Jul 2014 14:48:46 +0000 (08:48 -0600)
committerMark Brown <broonie@kernel.org>
Mon, 16 Feb 2015 05:50:43 +0000 (14:50 +0900)
The child pointer does not get cleared when attaching new nodes which
could cause the tree to be inconsistent. Clear the child pointer in
__of_attach_node() to be absolutely sure that the structure remains in a
consistent layout.

Signed-off-by: Grant Likely <grant.likely@linaro.org>
(cherry picked from commit 6162dbe49a451f96431a23b4821f05e3bd925bc1)
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/of/dynamic.c

index c875787fa3948df67972310f81064fc53b0607e0..b96d831009875e379178b21ebb4ebbd4ddda4ccd 100644 (file)
@@ -98,6 +98,7 @@ int of_property_notify(int action, struct device_node *np,
 
 void __of_attach_node(struct device_node *np)
 {
+       np->child = NULL;
        np->sibling = np->parent->child;
        np->allnext = np->parent->allnext;
        np->parent->allnext = np;