Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dd023217 authored by Nathan Fontenot's avatar Nathan Fontenot Committed by Benjamin Herrenschmidt
Browse files

powerpc/numa: Do not update sysfs cpu registration from invalid context



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: default avatarNathan Fontenot <nfont@linux.vnet.ibm.com>
CC: <stable@vger.kernel.org>
Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
parent ec207dcc
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -1432,11 +1432,9 @@ static int update_cpu_topology(void *data)
		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;
@@ -1484,6 +1482,9 @@ int arch_update_cpu_topology(void)
	stop_machine(update_cpu_topology, &updates[0], &updated_cpus);

	for (ud = &updates[0]; ud; ud = ud->next) {
		unregister_cpu_under_node(ud->cpu, ud->old_nid);
		register_cpu_under_node(ud->cpu, ud->new_nid);

		dev = get_cpu_device(ud->cpu);
		if (dev)
			kobject_uevent(&dev->kobj, KOBJ_CHANGE);