mirror of https://gitee.com/openkylin/linux.git
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>
This commit is contained in:
parent
62aa2b537c
commit
8b3262c00d
|
@ -136,7 +136,7 @@ Luser_return:
|
||||||
movel %sp,%d1 /* get thread_info pointer */
|
movel %sp,%d1 /* get thread_info pointer */
|
||||||
andl #-THREAD_SIZE,%d1 /* at base of kernel stack */
|
andl #-THREAD_SIZE,%d1 /* at base of kernel stack */
|
||||||
movel %d1,%a0
|
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 */
|
jne Lwork_to_do /* still work to do */
|
||||||
|
|
||||||
Lreturn:
|
Lreturn:
|
||||||
|
@ -148,8 +148,6 @@ Lwork_to_do:
|
||||||
btst #TIF_NEED_RESCHED,%d1
|
btst #TIF_NEED_RESCHED,%d1
|
||||||
jne reschedule
|
jne reschedule
|
||||||
|
|
||||||
/* GERG: do we need something here for TRACEing?? */
|
|
||||||
|
|
||||||
Lsignal_return:
|
Lsignal_return:
|
||||||
subql #4,%sp /* dummy return address */
|
subql #4,%sp /* dummy return address */
|
||||||
SAVE_SWITCH_STACK
|
SAVE_SWITCH_STACK
|
||||||
|
|
Loading…
Reference in New Issue