ARM: 7525/1: ptrace: use updated syscall number for syscall auditing
authorWill Deacon <will.deacon@arm.com>
Fri, 7 Sep 2012 17:20:30 +0000 (18:20 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Wed, 19 Sep 2012 20:50:50 +0000 (21:50 +0100)
When tracing system calls, a debugger may change the syscall number
in response to a SIGTRAP on syscall entry.

This patch ensures that the new syscall number is passed to the audit
code.

Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/kernel/ptrace.c

index c382d3c76ac6b48ccc79948d23bdebc41f2b179c..739db3a1b2d279216336025d88586d3ffd07a0e0 100644 (file)
@@ -944,19 +944,19 @@ static int ptrace_syscall_trace(struct pt_regs *regs, int scno,
 
 asmlinkage int syscall_trace_enter(struct pt_regs *regs, int scno)
 {
-       int ret = ptrace_syscall_trace(regs, scno, PTRACE_SYSCALL_ENTER);
+       scno = ptrace_syscall_trace(regs, scno, PTRACE_SYSCALL_ENTER);
        if (test_thread_flag(TIF_SYSCALL_TRACEPOINT))
-               trace_sys_enter(regs, ret);
+               trace_sys_enter(regs, scno);
        audit_syscall_entry(AUDIT_ARCH_ARM, scno, regs->ARM_r0, regs->ARM_r1,
                            regs->ARM_r2, regs->ARM_r3);
-       return ret;
+       return scno;
 }
 
 asmlinkage int syscall_trace_exit(struct pt_regs *regs, int scno)
 {
-       int ret = ptrace_syscall_trace(regs, scno, PTRACE_SYSCALL_EXIT);
+       scno = ptrace_syscall_trace(regs, scno, PTRACE_SYSCALL_EXIT);
        if (test_thread_flag(TIF_SYSCALL_TRACEPOINT))
-               trace_sys_exit(regs, ret);
+               trace_sys_exit(regs, scno);
        audit_syscall_exit(regs);
-       return ret;
+       return scno;
 }