TIF_SYSCALL_TRACE should be cleared only if both ptrace and utrace do
not want it, change utrace_reset() to check PT_SYSCALL_TRACE before
clear_tsk_thread_flag(TIF_SYSCALL_TRACE).

Signed-off-by: Oleg Nesterov <o...@redhat.com>
---
 kernel/utrace.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/kernel/utrace.c b/kernel/utrace.c
index 0bb0a06..bebf6de 100644
--- a/kernel/utrace.c
+++ b/kernel/utrace.c
@@ -697,6 +697,7 @@ static bool utrace_reset(struct task_struct *task, struct 
utrace *utrace)
                BUG_ON(utrace->death);
                flags &= UTRACE_EVENT(REAP);
        } else if (!(flags & UTRACE_EVENT_SYSCALL) &&
+                  !(task->ptrace & PT_SYSCALL_TRACE) &&
                   test_tsk_thread_flag(task, TIF_SYSCALL_TRACE)) {
                clear_tsk_thread_flag(task, TIF_SYSCALL_TRACE);
        }
-- 
1.5.5.1


Reply via email to