[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