Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5d83c2b3 authored by Michael Ellerman's avatar Michael Ellerman
Browse files

selftests/seccomp: Add powerpc support



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: default avatarKees Cook <keescook@chromium.org>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
parent c385d0db
Loading
Loading
Loading
Loading
+8 −1
Original line number Original line Diff line number Diff line
@@ -14,6 +14,7 @@
#include <linux/filter.h>
#include <linux/filter.h>
#include <sys/prctl.h>
#include <sys/prctl.h>
#include <sys/ptrace.h>
#include <sys/ptrace.h>
#include <sys/types.h>
#include <sys/user.h>
#include <sys/user.h>
#include <linux/prctl.h>
#include <linux/prctl.h>
#include <linux/ptrace.h>
#include <linux/ptrace.h>
@@ -1205,6 +1206,10 @@ TEST_F(TRACE_poke, getpid_runs_normally)
# define ARCH_REGS	struct user_pt_regs
# define ARCH_REGS	struct user_pt_regs
# define SYSCALL_NUM	regs[8]
# define SYSCALL_NUM	regs[8]
# define SYSCALL_RET	regs[0]
# 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
#else
# error "Do not know how to find your architecture's registers and syscalls"
# error "Do not know how to find your architecture's registers and syscalls"
#endif
#endif
@@ -1238,7 +1243,7 @@ void change_syscall(struct __test_metadata *_metadata,
	ret = ptrace(PTRACE_GETREGSET, tracee, NT_PRSTATUS, &iov);
	ret = ptrace(PTRACE_GETREGSET, tracee, NT_PRSTATUS, &iov);
	EXPECT_EQ(0, ret);
	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;
		regs.SYSCALL_NUM = syscall;
	}
	}
@@ -1402,6 +1407,8 @@ TEST_F(TRACE_syscall, syscall_dropped)
#  define __NR_seccomp 383
#  define __NR_seccomp 383
# elif defined(__aarch64__)
# elif defined(__aarch64__)
#  define __NR_seccomp 277
#  define __NR_seccomp 277
# elif defined(__powerpc__)
#  define __NR_seccomp 358
# else
# else
#  warning "seccomp syscall number unknown for this architecture"
#  warning "seccomp syscall number unknown for this architecture"
#  define __NR_seccomp 0xffff
#  define __NR_seccomp 0xffff