aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc/kernel/ptrace_64.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/sparc/kernel/ptrace_64.c')
-rw-r--r--arch/sparc/kernel/ptrace_64.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/arch/sparc/kernel/ptrace_64.c b/arch/sparc/kernel/ptrace_64.c
index 773c1f2983ce..c13c9f25d83a 100644
--- a/arch/sparc/kernel/ptrace_64.c
+++ b/arch/sparc/kernel/ptrace_64.c
@@ -27,6 +27,7 @@
27#include <trace/syscall.h> 27#include <trace/syscall.h>
28#include <linux/compat.h> 28#include <linux/compat.h>
29#include <linux/elf.h> 29#include <linux/elf.h>
30#include <linux/context_tracking.h>
30 31
31#include <asm/asi.h> 32#include <asm/asi.h>
32#include <asm/pgtable.h> 33#include <asm/pgtable.h>
@@ -1066,6 +1067,9 @@ asmlinkage int syscall_trace_enter(struct pt_regs *regs)
1066 /* do the secure computing check first */ 1067 /* do the secure computing check first */
1067 secure_computing_strict(regs->u_regs[UREG_G1]); 1068 secure_computing_strict(regs->u_regs[UREG_G1]);
1068 1069
1070 if (test_thread_flag(TIF_NOHZ))
1071 user_exit();
1072
1069 if (test_thread_flag(TIF_SYSCALL_TRACE)) 1073 if (test_thread_flag(TIF_SYSCALL_TRACE))
1070 ret = tracehook_report_syscall_entry(regs); 1074 ret = tracehook_report_syscall_entry(regs);
1071 1075
@@ -1086,6 +1090,9 @@ asmlinkage int syscall_trace_enter(struct pt_regs *regs)
1086 1090
1087asmlinkage void syscall_trace_leave(struct pt_regs *regs) 1091asmlinkage void syscall_trace_leave(struct pt_regs *regs)
1088{ 1092{
1093 if (test_thread_flag(TIF_NOHZ))
1094 user_exit();
1095
1089 audit_syscall_exit(regs); 1096 audit_syscall_exit(regs);
1090 1097
1091 if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT))) 1098 if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))
@@ -1093,4 +1100,7 @@ asmlinkage void syscall_trace_leave(struct pt_regs *regs)
1093 1100
1094 if (test_thread_flag(TIF_SYSCALL_TRACE)) 1101 if (test_thread_flag(TIF_SYSCALL_TRACE))
1095 tracehook_report_syscall_exit(regs, 0); 1102 tracehook_report_syscall_exit(regs, 0);
1103
1104 if (test_thread_flag(TIF_NOHZ))
1105 user_enter();
1096} 1106}