[PATCH] Do not update sysfs cpu registration from invalid context

Seth Jennings sjenning at linux.vnet.ibm.com
Tue Jun 25 03:18:04 EST 2013


On Mon, Jun 24, 2013 at 09:14:23AM -0500, Nathan Fontenot wrote:
> The topology update code that updates the cpu node registration in sysfs
> should not be called while in stop_machine(). The register/unregister
> calls take a lock and may sleep.
> 
> This patch moves these calls outside of the call to stop_machine().
> 
> Signed-off-by:Nathan Fontenot <nfont at linux.vnet.ibm.com>

Reviewed-by: Seth Jennings <sjenning at linux.vnet.ibm.com>

> ---
>  arch/powerpc/mm/numa.c |    5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> Index: powerpc/arch/powerpc/mm/numa.c
> ===================================================================
> --- powerpc.orig/arch/powerpc/mm/numa.c	2013-06-24 06:53:31.000000000 -0500
> +++ powerpc/arch/powerpc/mm/numa.c	2013-06-24 06:56:30.000000000 -0500
> @@ -1433,11 +1433,9 @@
>  		if (cpu != update->cpu)
>  			continue;
> 
> -		unregister_cpu_under_node(update->cpu, update->old_nid);
>  		unmap_cpu_from_node(update->cpu);
>  		map_cpu_to_node(update->cpu, update->new_nid);
>  		vdso_getcpu_init();
> -		register_cpu_under_node(update->cpu, update->new_nid);
>  	}
> 
>  	return 0;
> @@ -1485,6 +1483,9 @@
>  	stop_machine(update_cpu_topology, &updates[0], &updated_cpus);
> 
>  	for (ud = &updates[0]; ud; ud = ud->next) {
> +		unregister_cpu_under_node(update->cpu, update->old_nid);
> +		register_cpu_under_node(update->cpu, update->new_nid);
> +
>  		dev = get_cpu_device(ud->cpu);
>  		if (dev)
>  			kobject_uevent(&dev->kobj, KOBJ_CHANGE);
> 
> _______________________________________________
> Linuxppc-dev mailing list
> Linuxppc-dev at lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/linuxppc-dev
> 



More information about the Linuxppc-dev mailing list