diff options
Diffstat (limited to 'arch/ia64/kernel/ptrace.c')
-rw-r--r-- | arch/ia64/kernel/ptrace.c | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/arch/ia64/kernel/ptrace.c b/arch/ia64/kernel/ptrace.c index c253fd5914fc..907464ee7273 100644 --- a/arch/ia64/kernel/ptrace.c +++ b/arch/ia64/kernel/ptrace.c | |||
@@ -1596,20 +1596,25 @@ syscall_trace_enter (long arg0, long arg1, long arg2, long arg3, | |||
1596 | long arg4, long arg5, long arg6, long arg7, | 1596 | long arg4, long arg5, long arg6, long arg7, |
1597 | struct pt_regs regs) | 1597 | struct pt_regs regs) |
1598 | { | 1598 | { |
1599 | long syscall; | 1599 | if (test_thread_flag(TIF_SYSCALL_TRACE) |
1600 | && (current->ptrace & PT_PTRACED)) | ||
1601 | syscall_trace(); | ||
1600 | 1602 | ||
1601 | if (unlikely(current->audit_context)) { | 1603 | if (unlikely(current->audit_context)) { |
1602 | if (IS_IA32_PROCESS(®s)) | 1604 | long syscall; |
1605 | int arch; | ||
1606 | |||
1607 | if (IS_IA32_PROCESS(®s)) { | ||
1603 | syscall = regs.r1; | 1608 | syscall = regs.r1; |
1604 | else | 1609 | arch = AUDIT_ARCH_I386; |
1610 | } else { | ||
1605 | syscall = regs.r15; | 1611 | syscall = regs.r15; |
1612 | arch = AUDIT_ARCH_IA64; | ||
1613 | } | ||
1606 | 1614 | ||
1607 | audit_syscall_entry(current, syscall, arg0, arg1, arg2, arg3); | 1615 | audit_syscall_entry(current, arch, syscall, arg0, arg1, arg2, arg3); |
1608 | } | 1616 | } |
1609 | 1617 | ||
1610 | if (test_thread_flag(TIF_SYSCALL_TRACE) | ||
1611 | && (current->ptrace & PT_PTRACED)) | ||
1612 | syscall_trace(); | ||
1613 | } | 1618 | } |
1614 | 1619 | ||
1615 | /* "asmlinkage" so the input arguments are preserved... */ | 1620 | /* "asmlinkage" so the input arguments are preserved... */ |
@@ -1620,7 +1625,7 @@ syscall_trace_leave (long arg0, long arg1, long arg2, long arg3, | |||
1620 | struct pt_regs regs) | 1625 | struct pt_regs regs) |
1621 | { | 1626 | { |
1622 | if (unlikely(current->audit_context)) | 1627 | if (unlikely(current->audit_context)) |
1623 | audit_syscall_exit(current, regs.r8); | 1628 | audit_syscall_exit(current, AUDITSC_RESULT(regs.r10), regs.r8); |
1624 | 1629 | ||
1625 | if (test_thread_flag(TIF_SYSCALL_TRACE) | 1630 | if (test_thread_flag(TIF_SYSCALL_TRACE) |
1626 | && (current->ptrace & PT_PTRACED)) | 1631 | && (current->ptrace & PT_PTRACED)) |