summaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/topology.c
diff options
context:
space:
mode:
authorToshi Kani <toshi.kani@hp.com>2013-08-29 18:22:07 -0600
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2013-09-25 10:38:09 +0200
commit574b851e99923c884fee4e0d7cf7e7c3dc023ffa (patch)
tree7498d2dcbc4bd2e3bf03434461ca36d31790a087 /arch/x86/kernel/topology.c
parentf6913f990273a1fbfc0ec501d4998faa4f1ebae6 (diff)
downloadlinux-574b851e99923c884fee4e0d7cf7e7c3dc023ffa.tar.bz2
hotplug / x86: Add hotplug lock to missing places
lock_device_hotplug[_sysfs]() serializes CPU & Memory online/offline and hotplug operations. However, this lock is not held in the debug interfaces below that initiate CPU online/offline operations. - _debug_hotplug_cpu(), cpu0 hotplug test interface enabled by CONFIG_DEBUG_HOTPLUG_CPU0. - cpu_probe_store() and cpu_release_store(), cpu hotplug test interface enabled by CONFIG_ARCH_CPU_PROBE_RELEASE. This patch changes the above interfaces to hold lock_device_hotplug(). Signed-off-by: Toshi Kani <toshi.kani@hp.com> Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Acked-by: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'arch/x86/kernel/topology.c')
-rw-r--r--arch/x86/kernel/topology.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/x86/kernel/topology.c b/arch/x86/kernel/topology.c
index 5823bbd668f4..a3f35ebb3b52 100644
--- a/arch/x86/kernel/topology.c
+++ b/arch/x86/kernel/topology.c
@@ -65,6 +65,7 @@ int __ref _debug_hotplug_cpu(int cpu, int action)
if (!cpu_is_hotpluggable(cpu))
return -EINVAL;
+ lock_device_hotplug();
cpu_hotplug_driver_lock();
switch (action) {
@@ -91,6 +92,7 @@ int __ref _debug_hotplug_cpu(int cpu, int action)
}
cpu_hotplug_driver_unlock();
+ unlock_device_hotplug();
return ret;
}