diff options
Diffstat (limited to 'arch/xtensa/kernel/ptrace.c')
-rw-r--r-- | arch/xtensa/kernel/ptrace.c | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/arch/xtensa/kernel/ptrace.c b/arch/xtensa/kernel/ptrace.c index 604c3c3c6759..8b6d3d0623b6 100644 --- a/arch/xtensa/kernel/ptrace.c +++ b/arch/xtensa/kernel/ptrace.c | |||
@@ -332,12 +332,6 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
332 | 332 | ||
333 | void do_syscall_trace(void) | 333 | void do_syscall_trace(void) |
334 | { | 334 | { |
335 | if (!test_thread_flag(TIF_SYSCALL_TRACE)) | ||
336 | return; | ||
337 | |||
338 | if (!(current->ptrace & PT_PTRACED)) | ||
339 | return; | ||
340 | |||
341 | /* | 335 | /* |
342 | * The 0x80 provides a way for the tracing parent to distinguish | 336 | * The 0x80 provides a way for the tracing parent to distinguish |
343 | * between a syscall stop and SIGTRAP delivery | 337 | * between a syscall stop and SIGTRAP delivery |
@@ -354,3 +348,23 @@ void do_syscall_trace(void) | |||
354 | current->exit_code = 0; | 348 | current->exit_code = 0; |
355 | } | 349 | } |
356 | } | 350 | } |
351 | |||
352 | void do_syscall_trace_enter(struct pt_regs *regs) | ||
353 | { | ||
354 | if (test_thread_flag(TIF_SYSCALL_TRACE) | ||
355 | && (current->ptrace & PT_PTRACED)) | ||
356 | do_syscall_trace(); | ||
357 | |||
358 | #if 0 | ||
359 | if (unlikely(current->audit_context)) | ||
360 | audit_syscall_entry(current, AUDIT_ARCH_XTENSA..); | ||
361 | #endif | ||
362 | } | ||
363 | |||
364 | void do_syscall_trace_leave(struct pt_regs *regs) | ||
365 | { | ||
366 | if ((test_thread_flag(TIF_SYSCALL_TRACE)) | ||
367 | && (current->ptrace & PT_PTRACED)) | ||
368 | do_syscall_trace(); | ||
369 | } | ||
370 | |||