aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm
diff options
context:
space:
mode:
authorRussell King <rmk@dyn-67.arm.linux.org.uk>2007-06-02 10:36:37 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2007-06-02 16:31:49 -0400
commitf72267c30f5a08f9a77c97417ec120e6943195f8 (patch)
tree72516867e90329c97bb549d7cc26f06ef01b03e6 /arch/arm
parent29c349d22ccda5678a7dfb732093dbd3befcefa3 (diff)
[ARM] Solve buggy smp_processor_id() usage
BUG: using smp_processor_id() in preemptible [00000001] code: opcontrol/427 Resolve this bug by ensuring that we're not using smp_processor_id() in a preemptable context (by disabling preemption.) Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm')
-rw-r--r--arch/arm/oprofile/op_model_mpcore.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/arm/oprofile/op_model_mpcore.c b/arch/arm/oprofile/op_model_mpcore.c
index 7791da791f5f..75bae067922d 100644
--- a/arch/arm/oprofile/op_model_mpcore.c
+++ b/arch/arm/oprofile/op_model_mpcore.c
@@ -200,8 +200,10 @@ static int em_call_function(int (*fn)(void))
200 data.fn = fn; 200 data.fn = fn;
201 data.ret = 0; 201 data.ret = 0;
202 202
203 preempt_disable();
203 smp_call_function(em_func, &data, 1, 1); 204 smp_call_function(em_func, &data, 1, 1);
204 em_func(&data); 205 em_func(&data);
206 preempt_enable();
205 207
206 return data.ret; 208 return data.ret;
207} 209}