tree dc0d548a520bdad1e2aa7752153bf7c787fc04bd
parent bb49bcda15f1bc1a52c7f887db278447f332eaa7
author David S. Miller <[EMAIL PROTECTED]> Mon, 11 Jul 2005 06:55:48 -0700
committer David S. Miller <[EMAIL PROTECTED]> Mon, 11 Jul 2005 06:55:48 -0700

[SPARC64]: Pass regs and entry/exit boolean to syscall_trace()

Also fix a bug in 32-bit syscall tracing.  We forgot to update
this code when we moved over to the convention that all 32-bit
syscall arguments are zero extended by default.

Signed-off-by: David S. Miller <[EMAIL PROTECTED]>

 arch/sparc64/kernel/entry.S         |   14 +++++++++-----
 arch/sparc64/kernel/ptrace.c        |    4 ++--
 arch/sparc64/kernel/sparc64_ksyms.c |    2 +-
 arch/sparc64/solaris/entry64.S      |    7 +++++--
 4 files changed, 17 insertions(+), 10 deletions(-)

diff --git a/arch/sparc64/kernel/entry.S b/arch/sparc64/kernel/entry.S
--- a/arch/sparc64/kernel/entry.S
+++ b/arch/sparc64/kernel/entry.S
@@ -1555,8 +1555,9 @@ sys_ptrace:       add             %sp, PTREGS_OFF, %o0
                andcc           %l5, (_TIF_SYSCALL_TRACE|_TIF_SECCOMP), %g0
                be,pt           %icc, rtrap
                 clr            %l6
+               add             %sp, PTREGS_OFF, %o0
                call            syscall_trace
-                nop
+                mov            1, %o1
 
                ba,pt           %xcc, rtrap
                 clr            %l6
@@ -1640,18 +1641,20 @@ linux_sparc_ni_syscall:
         or             %l7, %lo(sys_ni_syscall), %l7
 
 linux_syscall_trace32:
+       add             %sp, PTREGS_OFF, %o0
        call            syscall_trace
-        nop
+        clr            %o1
        srl             %i0, 0, %o0
-       mov             %i4, %o4
+       srl             %i4, 0, %o4
        srl             %i1, 0, %o1
        srl             %i2, 0, %o2
        b,pt            %xcc, 2f
         srl            %i3, 0, %o3
 
 linux_syscall_trace:
+       add             %sp, PTREGS_OFF, %o0
        call            syscall_trace
-        nop
+        clr            %o1
        mov             %i0, %o0
        mov             %i1, %o1
        mov             %i2, %o2
@@ -1755,8 +1758,9 @@ ret_sys_call:
        b,pt            %xcc, rtrap
         stx            %l2, [%sp + PTREGS_OFF + PT_V9_TNPC]
 linux_syscall_trace2:
+       add             %sp, PTREGS_OFF, %o0
        call            syscall_trace
-        nop
+        mov            1, %o1
        stx             %l1, [%sp + PTREGS_OFF + PT_V9_TPC]
        ba,pt           %xcc, rtrap
         stx            %l2, [%sp + PTREGS_OFF + PT_V9_TNPC]
diff --git a/arch/sparc64/kernel/ptrace.c b/arch/sparc64/kernel/ptrace.c
--- a/arch/sparc64/kernel/ptrace.c
+++ b/arch/sparc64/kernel/ptrace.c
@@ -628,10 +628,10 @@ out:
        unlock_kernel();
 }
 
-asmlinkage void syscall_trace(void)
+asmlinkage void syscall_trace(struct pt_regs *regs, int syscall_exit_p)
 {
        /* do the secure computing check first */
-       secure_computing(current_thread_info()->kregs->u_regs[UREG_G1]);
+       secure_computing(regs->u_regs[UREG_G1]);
 
        if (!test_thread_flag(TIF_SYSCALL_TRACE))
                return;
diff --git a/arch/sparc64/kernel/sparc64_ksyms.c 
b/arch/sparc64/kernel/sparc64_ksyms.c
--- a/arch/sparc64/kernel/sparc64_ksyms.c
+++ b/arch/sparc64/kernel/sparc64_ksyms.c
@@ -79,7 +79,7 @@ extern void linux_sparc_syscall(void);
 extern void rtrap(void);
 extern void show_regs(struct pt_regs *);
 extern void solaris_syscall(void);
-extern void syscall_trace(void);
+extern void syscall_trace(struct pt_regs *, int);
 extern u32 sunos_sys_table[], sys_call_table32[];
 extern void tl0_solaris(void);
 extern void sys_sigsuspend(void);
diff --git a/arch/sparc64/solaris/entry64.S b/arch/sparc64/solaris/entry64.S
--- a/arch/sparc64/solaris/entry64.S
+++ b/arch/sparc64/solaris/entry64.S
@@ -24,8 +24,9 @@
 
        .text
 solaris_syscall_trace:
+       add             %sp, PTREGS_OFF, %o0
        call            syscall_trace
-        nop
+        mov            0, %o1
        srl             %i0, 0, %o0
        mov             %i4, %o4
        srl             %i1, 0, %o1
@@ -159,8 +160,10 @@ ret_from_solaris:
         stx            %l2, [%sp + PTREGS_OFF + PT_V9_TNPC] !npc = npc+4 
 
 solaris_syscall_trace2:
+       add             %sp, PTREGS_OFF, %o0
        call            syscall_trace
-        add            %l1, 0x4, %l2                   /* npc = npc+4 */
+        mov            1, %o1
+       add             %l1, 0x4, %l2                   /* npc = npc+4 */
        andcc           %l1, 1, %g0
        bne,pn          %icc, 2b
         nop
-
To unsubscribe from this list: send the line "unsubscribe bk-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to