[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