diff options
author | Sebastian Siewior <bigeasy@linutronix.de> | 2008-05-01 12:17:49 +1000 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-05-01 08:08:36 -0700 |
commit | 6c5a7d504fb0e27aa90b96267177d434642a393d (patch) | |
tree | 2735d367a526fd9136f22fc117d99ab53e3f7577 | |
parent | 0042a1f7ecbc5d40eb2164f375ec87ecf3494418 (diff) | |
download | op-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.S | 2 |
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 |