summaryrefslogtreecommitdiffstats
path: root/arch/m68knommu
diff options
context:
space:
mode:
authorSebastian Siewior2008-05-01 04:17:49 +0200
committerLinus Torvalds2008-05-01 17:08:36 +0200
commit6c5a7d504fb0e27aa90b96267177d434642a393d (patch)
tree2735d367a526fd9136f22fc117d99ab53e3f7577 /arch/m68knommu
parentm68knommu: rework definition of HZ (diff)
downloadkernel-qcow2-linux-6c5a7d504fb0e27aa90b96267177d434642a393d.tar.gz
kernel-qcow2-linux-6c5a7d504fb0e27aa90b96267177d434642a393d.tar.xz
kernel-qcow2-linux-6c5a7d504fb0e27aa90b96267177d434642a393d.zip
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>
Diffstat (limited to 'arch/m68knommu')
-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 1af7c1d650f6..1e3c0dcbd7ac 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