diff options
Diffstat (limited to 'arch/sparc/kernel/ptrace_64.c')
-rw-r--r-- | arch/sparc/kernel/ptrace_64.c | 10 |
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 | ||
1087 | asmlinkage void syscall_trace_leave(struct pt_regs *regs) | 1091 | asmlinkage 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 | } |