On 08/15/2013 12:23 AM, Tyrel Datwyler wrote: > Currently the OF_DYNAMIC and kref initialization for a node happens in > dlpar_attach_node. However, a node passed to dlpar_attach_node may be a tree > containing child nodes, and no initialization traversal is done on the > tree. Since the children never get their kref initialized or the OF_DYNAMIC > flag set these nodes are prevented from ever being released from memory > should they become detached. This initialization step is better done at the > time each node is allocated in dlpar_parse_cc_node. > > Signed-off-by: Tyrel Datwyler <tyr...@linux.vnet.ibm.com>
Acked-by: Nathan Fontenot <nf...@linux.vnet.ibm.com> > --- > arch/powerpc/platforms/pseries/dlpar.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/arch/powerpc/platforms/pseries/dlpar.c > b/arch/powerpc/platforms/pseries/dlpar.c > index a1a7b9a..c855233 100644 > --- a/arch/powerpc/platforms/pseries/dlpar.c > +++ b/arch/powerpc/platforms/pseries/dlpar.c > @@ -83,6 +83,9 @@ static struct device_node *dlpar_parse_cc_node(struct > cc_workarea *ccwa) > return NULL; > } > > + of_node_set_flag(dn, OF_DYNAMIC); > + kref_init(&dn->kref); > + > return dn; > } > > @@ -256,8 +259,6 @@ int dlpar_attach_node(struct device_node *dn) > { > int rc; > > - of_node_set_flag(dn, OF_DYNAMIC); > - kref_init(&dn->kref); > dn->parent = derive_parent(dn->full_name); > if (!dn->parent) > return -ENOMEM; > _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev