diff options
author | Roland McGrath <roland@redhat.com> | 2008-07-09 01:33:14 -0700 |
---|---|---|
committer | Roland McGrath <roland@redhat.com> | 2008-07-16 12:15:16 -0700 |
commit | 64f097331928b01d704047c1dbc738bb6d2a9bf9 (patch) | |
tree | 402fe071f26a9bbdbffdc98c2f592ff9eeb6a404 /include/asm-x86 | |
parent | 6718d0d6da2749d3bff522e6057e97e6aa85e4d1 (diff) | |
download | op-kernel-dev-64f097331928b01d704047c1dbc738bb6d2a9bf9.zip op-kernel-dev-64f097331928b01d704047c1dbc738bb6d2a9bf9.tar.gz |
x86 ptrace: unify TIF_SINGLESTEP
This unifies the treatment of TIF_SINGLESTEP on i386 and x86_64.
The bit is now excluded from _TIF_WORK_MASK on i386 as it has been
on x86_64. This means the do_notify_resume() path using it is never
used, so TIF_SINGLESTEP is not cleared on returning to user mode.
Both now leave TIF_SINGLESTEP set when returning to user, so that
it's already set on an int $0x80 system call entry. This removes
the need for testing TF on the system_call path. Doing it this way
fixes the regression for PTRACE_SINGLESTEP into a sigreturn syscall,
introduced by commit 1e2e99f0e4aa6363e8515ed17011c210c8f1b52a.
The clear_TF_reenable case that sets TIF_SINGLESTEP can only happen
on a non-exception kernel entry, i.e. sysenter/syscall instruction.
That will always get to the syscall exit tracing path.
Signed-off-by: Roland McGrath <roland@redhat.com>
Diffstat (limited to 'include/asm-x86')
-rw-r--r-- | include/asm-x86/thread_info.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/include/asm-x86/thread_info.h b/include/asm-x86/thread_info.h index 895339d..fb8d3cd 100644 --- a/include/asm-x86/thread_info.h +++ b/include/asm-x86/thread_info.h @@ -124,7 +124,7 @@ struct thread_info { /* work to do on interrupt/exception return */ #define _TIF_WORK_MASK \ (0x0000FFFF & \ - ~(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT|_TIF_SINGLESTEP| \ + ~(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT| \ _TIF_SECCOMP|_TIF_SYSCALL_EMU)) /* work to do on any return to user space */ @@ -132,7 +132,7 @@ struct thread_info { /* Only used for 64 bit */ #define _TIF_DO_NOTIFY_MASK \ - (_TIF_SIGPENDING|_TIF_SINGLESTEP|_TIF_MCE_NOTIFY|_TIF_HRTICK_RESCHED) + (_TIF_SIGPENDING|_TIF_MCE_NOTIFY|_TIF_HRTICK_RESCHED) /* flags to check in __switch_to() */ #define _TIF_WORK_CTXSW \ |