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 <tyreld@linux.vnet.ibm.com> Acked-by: Nathan Fontenot <nfont@linux.vnet.ibm.com> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:
parent
14cd820a2a
commit
5935ff4343
@ -286,8 +286,15 @@ int dlpar_attach_node(struct device_node *dn)
|
|||||||
|
|
||||||
int dlpar_detach_node(struct device_node *dn)
|
int dlpar_detach_node(struct device_node *dn)
|
||||||
{
|
{
|
||||||
|
struct device_node *child;
|
||||||
int rc;
|
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);
|
rc = of_detach_node(dn);
|
||||||
if (rc)
|
if (rc)
|
||||||
return rc;
|
return rc;
|
||||||
|
Loading…
Reference in New Issue
Block a user