sh: Fix up the audit arch endian specification.
authorPaul Mundt <lethal@linux-sh.org>
Wed, 30 Jul 2008 11:05:35 +0000 (20:05 +0900)
committerPaul Mundt <lethal@linux-sh.org>
Fri, 1 Aug 2008 19:39:33 +0000 (04:39 +0900)
Presently this was always being set to AUDIT_ARCH_SH, which assumes
big endian. Fix this up so that the architecture actually reflects
what we're running on.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
arch/sh/kernel/ptrace_32.c
arch/sh/kernel/ptrace_64.c

index f48769b23bd6e92317ac0c5c0400ba1cecc53591..035cb300d3dcf245b894e86ac39931cbdeee696f 100644 (file)
@@ -217,6 +217,17 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
        return ret;
 }
 
+static inline int audit_arch(void)
+{
+       int arch = EM_SH;
+
+#ifdef CONFIG_CPU_LITTLE_ENDIAN
+       arch |= __AUDIT_ARCH_LE;
+#endif
+
+       return arch;
+}
+
 asmlinkage long do_syscall_trace_enter(struct pt_regs *regs)
 {
        long ret = 0;
@@ -233,7 +244,7 @@ asmlinkage long do_syscall_trace_enter(struct pt_regs *regs)
                ret = -1L;
 
        if (unlikely(current->audit_context))
-               audit_syscall_entry(AUDIT_ARCH_SH, regs->regs[3],
+               audit_syscall_entry(audit_arch(), regs->regs[3],
                                    regs->regs[4], regs->regs[5],
                                    regs->regs[6], regs->regs[7]);
 
index 236d8bef9ccd0947d196ee5f8ddb4a9274f137fc..5922edd416dbc2b049063d58248fc75132a25fb8 100644 (file)
@@ -222,6 +222,20 @@ asmlinkage int sh64_ptrace(long request, long pid, long addr, long data)
        return sys_ptrace(request, pid, addr, data);
 }
 
+static inline int audit_arch(void)
+{
+       int arch = EM_SH;
+
+#ifdef CONFIG_64BIT
+       arch |= __AUDIT_ARCH_64BIT;
+#endif
+#ifdef CONFIG_CPU_LITTLE_ENDIAN
+       arch |= __AUDIT_ARCH_LE;
+#endif
+
+       return arch;
+}
+
 asmlinkage long long do_syscall_trace_enter(struct pt_regs *regs)
 {
        long long ret = 0;
@@ -238,7 +252,7 @@ asmlinkage long long do_syscall_trace_enter(struct pt_regs *regs)
                ret = -1LL;
 
        if (unlikely(current->audit_context))
-               audit_syscall_entry(AUDIT_ARCH_SH, regs->regs[1],
+               audit_syscall_entry(audit_arch(), regs->regs[1],
                                    regs->regs[2], regs->regs[3],
                                    regs->regs[4], regs->regs[5]);