No functional changes. Currently ptrace_report_syscall_exit() and
ptrace_report_signal(UTRACE_SIGNAL_HANDLER) can see either UTRACE_RESUME
or UTRACE_BLOCKSTEP/UTRACE_SINGLESTEP, but we are going to change this.
Change the code to not assume that resume != UTRACE_RESUME means stepping.
Add the trivial helper, is_step_resume(), which does the check.

Signed-off-by: Oleg Nesterov <o...@redhat.com>
---

 kernel/ptrace-utrace.c |   15 +++++++--------
 1 file changed, 7 insertions(+), 8 deletions(-)

--- kstub/kernel/ptrace-utrace.c~3_resume_step_helper   2010-09-20 
03:53:31.000000000 +0200
+++ kstub/kernel/ptrace-utrace.c        2010-09-20 03:53:31.000000000 +0200
@@ -418,6 +418,11 @@ static u32 ptrace_report_syscall_entry(u
        return UTRACE_SYSCALL_RUN | UTRACE_STOP;
 }
 
+static inline bool is_step_resume(enum utrace_resume_action resume)
+{
+       return resume == UTRACE_BLOCKSTEP || resume == UTRACE_SINGLESTEP;
+}
+
 static u32 ptrace_report_syscall_exit(u32 action, struct utrace_engine *engine,
                                      struct pt_regs *regs)
 {
@@ -426,10 +431,7 @@ static u32 ptrace_report_syscall_exit(u3
        if (ptrace_event_pending(ctx))
                return UTRACE_STOP;
 
-       if (ctx->resume != UTRACE_RESUME) {
-               WARN_ON(ctx->resume != UTRACE_BLOCKSTEP &&
-                       ctx->resume != UTRACE_SINGLESTEP);
-
+       if (is_step_resume(ctx->resume)) {
                ctx->signr = SIGTRAP;
                return UTRACE_INTERRUPT;
        }
@@ -517,10 +519,7 @@ static u32 ptrace_report_signal(u32 acti
                if (WARN_ON(ctx->siginfo))
                        ctx->siginfo = NULL;
 
-               if (resume != UTRACE_RESUME) {
-                       WARN_ON(resume != UTRACE_BLOCKSTEP &&
-                               resume != UTRACE_SINGLESTEP);
-
+               if (is_step_resume(resume)) {
                        set_stop_code(ctx, PTRACE_EVENT_SIGTRAP);
                        return UTRACE_STOP | UTRACE_SIGNAL_IGN;
                }

Reply via email to