]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
selftests/seccomp: Add powerpc support
authorMichael Ellerman <mpe@ellerman.id.au>
Thu, 23 Jul 2015 10:21:11 +0000 (20:21 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Thu, 30 Jul 2015 04:35:36 +0000 (14:35 +1000)
Wire up the syscall number and regs so the tests work on powerpc.

With the powerpc kernel support just merged, all tests pass on ppc64,
ppc64 (compat), ppc64le, ppc, ppc64e and ppc64e (compat).

Acked-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
tools/testing/selftests/seccomp/seccomp_bpf.c

index 2303a8dff9a27a7a7e684a6dcb62ee16debeea07..a004b4cce99ef3098005ea4b4607cc825f46b667 100644 (file)
@@ -14,6 +14,7 @@
 #include <linux/filter.h>
 #include <sys/prctl.h>
 #include <sys/ptrace.h>
+#include <sys/types.h>
 #include <sys/user.h>
 #include <linux/prctl.h>
 #include <linux/ptrace.h>
@@ -1205,6 +1206,10 @@ TEST_F(TRACE_poke, getpid_runs_normally)
 # define ARCH_REGS     struct user_pt_regs
 # define SYSCALL_NUM   regs[8]
 # define SYSCALL_RET   regs[0]
+#elif defined(__powerpc__)
+# define ARCH_REGS     struct pt_regs
+# define SYSCALL_NUM   gpr[0]
+# define SYSCALL_RET   gpr[3]
 #else
 # error "Do not know how to find your architecture's registers and syscalls"
 #endif
@@ -1238,7 +1243,7 @@ void change_syscall(struct __test_metadata *_metadata,
        ret = ptrace(PTRACE_GETREGSET, tracee, NT_PRSTATUS, &iov);
        EXPECT_EQ(0, ret);
 
-#if defined(__x86_64__) || defined(__i386__) || defined(__aarch64__)
+#if defined(__x86_64__) || defined(__i386__) || defined(__aarch64__) || defined(__powerpc__)
        {
                regs.SYSCALL_NUM = syscall;
        }
@@ -1402,6 +1407,8 @@ TEST_F(TRACE_syscall, syscall_dropped)
 #  define __NR_seccomp 383
 # elif defined(__aarch64__)
 #  define __NR_seccomp 277
+# elif defined(__powerpc__)
+#  define __NR_seccomp 358
 # else
 #  warning "seccomp syscall number unknown for this architecture"
 #  define __NR_seccomp 0xffff