summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Siewior <bigeasy@linutronix.de>2008-05-01 12:17:49 +1000
committerLinus Torvalds <torvalds@linux-foundation.org>2008-05-01 08:08:36 -0700
commit6c5a7d504fb0e27aa90b96267177d434642a393d (patch)
tree2735d367a526fd9136f22fc117d99ab53e3f7577
parent0042a1f7ecbc5d40eb2164f375ec87ecf3494418 (diff)
downloadop-kernel-dev-6c5a7d504fb0e27aa90b96267177d434642a393d.zip
op-kernel-dev-6c5a7d504fb0e27aa90b96267177d434642a393d.tar.gz
m68knommu: fix compare race in sched related code
The interrupts must be disabled before considering the need resched bit of the task struct and they have to be disabled before calling schedule() Signed-off-by: Sebastian Siewior <bigeasy@linutronix.de> Signed-off-by: Greg Ungerer <gerg@uclinux.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--arch/m68knommu/platform/coldfire/entry.S2
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/m68knommu/platform/coldfire/entry.S b/arch/m68knommu/platform/coldfire/entry.S
index 1af7c1d..1e3c0dc 100644
--- a/arch/m68knommu/platform/coldfire/entry.S
+++ b/arch/m68knommu/platform/coldfire/entry.S
@@ -103,6 +103,7 @@ ret_from_signal:
addql #4,%sp
ret_from_exception:
+ move #0x2700,%sr /* disable intrs */
btst #5,%sp@(PT_SR) /* check if returning to kernel */
jeq Luser_return /* if so, skip resched, signals */
@@ -156,6 +157,7 @@ Lreturn:
Lwork_to_do:
movel %a0@(TI_FLAGS),%d1 /* get thread_info->flags */
+ move #0x2000,%sr /* enable intrs again */
btst #TIF_NEED_RESCHED,%d1
jne reschedule
OpenPOWER on IntegriCloud