From: Tyrel Datwyler Date: Thu, 15 Aug 2013 05:23:52 +0000 (-0700) Subject: powerpc/pseries: Child nodes are not detached by dlpar_detach_node X-Git-Url: http://drtracing.org/?a=commitdiff_plain;h=5935ff4343a689fbb382d64408bc6955c6589830;p=deliverable%2Flinux.git powerpc/pseries: Child nodes are not detached by dlpar_detach_node Calls to dlpar_detach_node do not iterate over child nodes detaching them as well. By iterating and detaching the child nodes we ensure that they have the OF_DETACHED flag set and that their reference counts are decremented such that the node will be freed from memory by of_node_release. Signed-off-by: Tyrel Datwyler Acked-by: Nathan Fontenot Signed-off-by: Benjamin Herrenschmidt --- diff --git a/arch/powerpc/platforms/pseries/dlpar.c b/arch/powerpc/platforms/pseries/dlpar.c index 4ea667d2b0f3..7cfdaae1721a 100644 --- a/arch/powerpc/platforms/pseries/dlpar.c +++ b/arch/powerpc/platforms/pseries/dlpar.c @@ -286,8 +286,15 @@ int dlpar_attach_node(struct device_node *dn) int dlpar_detach_node(struct device_node *dn) { + struct device_node *child; int rc; + child = of_get_next_child(dn, NULL); + while (child) { + dlpar_detach_node(child); + child = of_get_next_child(dn, child); + } + rc = of_detach_node(dn); if (rc) return rc;