summaryrefslogtreecommitdiffstats
path: root/arch/x86
diff options
context:
space:
mode:
authorcpw@sgi.com <cpw@sgi.com>2011-06-21 14:21:26 +0200
committerIngo Molnar <mingo@elte.hu>2011-06-21 14:50:31 +0200
commit00b30cf04a775b5292ab704f782394e36e25617d (patch)
treef32ed307eb07b5aca3130e99f4479ed6f4e736b5 /arch/x86
parentx66, UV: Enable 64-bit ACPI MFCG support for SGI UV2 platform (diff)
downloadlinux-00b30cf04a775b5292ab704f782394e36e25617d.tar.xz
linux-00b30cf04a775b5292ab704f782394e36e25617d.zip
x86, UV: Fix smp_processor_id() use in a preemptable region
Fix a call by tunables_write() to smp_processor_id() within a preemptable region. Call get_cpu()/put_cpu() around the region where the returned cpu number is actually used, which makes it non-preemptable. A DEBUG_PREEMPT warning is prevented. UV does not support cpu hotplug yet, but this is a step toward that ability as well. Signed-off-by: Cliff Wickman <cpw@sgi.com> Link: http://lkml.kernel.org/r/20110621122242.086384966@sgi.com Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86')
-rw-r--r--arch/x86/platform/uv/tlb_uv.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/arch/x86/platform/uv/tlb_uv.c b/arch/x86/platform/uv/tlb_uv.c
index 68e467f69fec..34be65093309 100644
--- a/arch/x86/platform/uv/tlb_uv.c
+++ b/arch/x86/platform/uv/tlb_uv.c
@@ -1334,9 +1334,10 @@ static ssize_t tunables_write(struct file *file, const char __user *user,
instr[count] = '\0';
- bcp = &per_cpu(bau_control, smp_processor_id());
-
+ cpu = get_cpu();
+ bcp = &per_cpu(bau_control, cpu);
ret = parse_tunables_write(bcp, instr, count);
+ put_cpu();
if (ret)
return ret;