7d94143291
When PTRACE_SYSCALL was used and then PTRACE_DETACH is used, the TIF_SYSCALL_TRACE flag is left set on the formerly-traced task. This means that when a new tracer comes along and does PTRACE_ATTACH, it's possible he gets a syscall tracing stop even though he's never used PTRACE_SYSCALL. This happens if the task was in the middle of a system call when the second PTRACE_ATTACH was done. The symptom is an unexpected SIGTRAP when the tracer thinks that only SIGSTOP should have been provoked by his ptrace calls so far. A few machines already fixed this in ptrace_disable (i386, ia64, m68k). But all other machines do not, and still have this bug. On x86_64, this constitutes a regression in IA32 compatibility support. Since all machines now use TIF_SYSCALL_TRACE for this, I put the clearing of TIF_SYSCALL_TRACE in the generic ptrace_detach code rather than adding it to every other machine's ptrace_disable. Signed-off-by: Roland McGrath <roland@redhat.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> |
||
---|---|---|
.. | ||
asm-offsets.c | ||
bios32.c | ||
dma.c | ||
entry.S | ||
head.S | ||
ints.c | ||
m68k_ksyms.c | ||
Makefile | ||
module.c | ||
module.lds | ||
process.c | ||
ptrace.c | ||
semaphore.c | ||
setup.c | ||
signal.c | ||
sun3-head.S | ||
sys_m68k.c | ||
time.c | ||
traps.c | ||
vmlinux-std.lds | ||
vmlinux-sun3.lds | ||
vmlinux.lds.S |