diff options
author | Greg Ungerer <gerg@uclinux.org> | 2012-01-16 16:46:04 +1000 |
---|---|---|
committer | Greg Ungerer <gerg@uclinux.org> | 2012-02-07 11:03:53 +1000 |
commit | 8b3262c00d6feccdccd6567d27687ae4b64c54bd (patch) | |
tree | a9f0f6aaa948722b6bb5aa121a550e5e6d6bd0b3 /arch | |
parent | 62aa2b537c6f5957afd98e29f96897419ed5ebab (diff) | |
download | op-kernel-dev-8b3262c00d6feccdccd6567d27687ae4b64c54bd.zip op-kernel-dev-8b3262c00d6feccdccd6567d27687ae4b64c54bd.tar.gz |
m68knommu: fix syscall tracing stuck process
The return path from an exception was checking too many bits in the
thread_info->flags, and getting stuck calling do_signal(). There was
no work to do, we should only be checking the low 8 bits (as per comments
and definitions in arch/m68k/include/asm/thread_info.h).
This fixes the stuck process problem when using strace.
Signed-off-by: Greg Ungerer <gerg@uclinux.org>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/m68k/platform/coldfire/entry.S | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/arch/m68k/platform/coldfire/entry.S b/arch/m68k/platform/coldfire/entry.S index 863889f..281e38c 100644 --- a/arch/m68k/platform/coldfire/entry.S +++ b/arch/m68k/platform/coldfire/entry.S @@ -136,7 +136,7 @@ Luser_return: movel %sp,%d1 /* get thread_info pointer */ andl #-THREAD_SIZE,%d1 /* at base of kernel stack */ movel %d1,%a0 - movel %a0@(TINFO_FLAGS),%d1 /* get thread_info->flags */ + moveb %a0@(TINFO_FLAGS+3),%d1 /* thread_info->flags (low 8 bits) */ jne Lwork_to_do /* still work to do */ Lreturn: @@ -148,8 +148,6 @@ Lwork_to_do: btst #TIF_NEED_RESCHED,%d1 jne reschedule - /* GERG: do we need something here for TRACEing?? */ - Lsignal_return: subql #4,%sp /* dummy return address */ SAVE_SWITCH_STACK |