[PATCH 5/8] powerpc/pseries: do all node initialization in dlpar_parse_cc_node
Nathan Fontenot
nfont at linux.vnet.ibm.com
Mon Aug 19 23:49:21 EST 2013
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 <tyreld at linux.vnet.ibm.com>
Acked-by: Nathan Fontenot <nfont at 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;
>
More information about the Linuxppc-dev
mailing list