Browse Source

m68k: Missing syscall_trace() on sigreturn

If we leave sigreturn via ret_from_signal, we end up with syscall
trace only on entry, leading to very unhappy strace, among other
things.  Note that this means different behaviours for signals
delivered while we were in pagefault and for ones delivered while
we were in interrupt...

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Al Viro 14 years ago
parent
commit
bd6f56a75b
1 changed files with 4 additions and 1 deletions
  1. 4 1
      arch/m68k/kernel/entry.S

+ 4 - 1
arch/m68k/kernel/entry.S

@@ -99,7 +99,10 @@ do_trace_exit:
 	jra	.Lret_from_exception
 	jra	.Lret_from_exception
 
 
 ENTRY(ret_from_signal)
 ENTRY(ret_from_signal)
-	RESTORE_SWITCH_STACK
+	tstb	%curptr@(TASK_INFO+TINFO_FLAGS+2)
+	jge	1f
+	jbsr	syscall_trace
+1:	RESTORE_SWITCH_STACK
 	addql	#4,%sp
 	addql	#4,%sp
 /* on 68040 complete pending writebacks if any */
 /* on 68040 complete pending writebacks if any */
 #ifdef CONFIG_M68040
 #ifdef CONFIG_M68040