[POWERPC] Fix ppc32 single-stepping out of syscalls
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>
Thu, 24 May 2007 05:41:04 +0000 (15:41 +1000)
committerPaul Mackerras <paulus@samba.org>
Sat, 2 Jun 2007 11:01:55 +0000 (21:01 +1000)
The ppc32 kernel didn't properly set/clear the TIF_SINGLESTEP
flag, causing return from syscalls to not SIGTRAP, thus executing
one more instruction before stopping again.

This fixes it.  The ptrace code is a bit of a mess, and is overdue
for at least a -proper- 32/64 bits split and possibly more cleanups
but this minimum fix should be ok for 2.6.22

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
arch/powerpc/kernel/ptrace.c

index f4f391cdd8f5e8bb45c059cf2779fd97d7f1cd3f..bf76562167c34dc4334332b65cdc4bc14f90aa6e 100644 (file)
@@ -218,6 +218,7 @@ set_single_step(struct task_struct *task)
                regs->msr |= MSR_SE;
 #endif
        }
+       set_tsk_thread_flag(task, TIF_SINGLESTEP);
 }
 
 static inline void
@@ -233,6 +234,7 @@ clear_single_step(struct task_struct *task)
                regs->msr &= ~MSR_SE;
 #endif
        }
+       clear_tsk_thread_flag(task, TIF_SINGLESTEP);
 }
 #endif /* CONFIG_PPC32 */