Commit 37989de7 authored by Kees Cook's avatar Kees Cook

selftests/seccomp: mips: Remove O32-specific macro

Instead of having the mips O32 macro special-cased, pull the logic into
the SYSCALL_NUM() macro. Additionally include the ABI headers, since
these appear to have been missing, leaving __NR_O32_Linux undefined.
Signed-off-by: default avatarKees Cook <keescook@chromium.org>
Link: https://lore.kernel.org/lkml/20200912110820.597135-7-keescook@chromium.orgAcked-by: default avatarChristian Brauner <christian.brauner@ubuntu.com>
parent 0dd7d685
...@@ -1756,9 +1756,19 @@ TEST_F(TRACE_poke, getpid_runs_normally) ...@@ -1756,9 +1756,19 @@ TEST_F(TRACE_poke, getpid_runs_normally)
# define SYSCALL_RET(_regs) (_regs).gprs[2] # define SYSCALL_RET(_regs) (_regs).gprs[2]
# define SYSCALL_NUM_RET_SHARE_REG # define SYSCALL_NUM_RET_SHARE_REG
#elif defined(__mips__) #elif defined(__mips__)
# include <asm/unistd_nr_n32.h>
# include <asm/unistd_nr_n64.h>
# include <asm/unistd_nr_o32.h>
# define ARCH_REGS struct pt_regs # define ARCH_REGS struct pt_regs
# define SYSCALL_NUM(_regs) (_regs).regs[2] # define SYSCALL_NUM(_regs) \
# define SYSCALL_SYSCALL_NUM regs[4] ({ \
typeof((_regs).regs[2]) _nr; \
if ((_regs).regs[2] == __NR_O32_Linux) \
_nr = (_regs).regs[4]; \
else \
_nr = (_regs).regs[2]; \
_nr; \
})
# define SYSCALL_NUM_SET(_regs, _nr) \ # define SYSCALL_NUM_SET(_regs, _nr) \
do { \ do { \
if ((_regs).regs[2] == __NR_O32_Linux) \ if ((_regs).regs[2] == __NR_O32_Linux) \
...@@ -1838,10 +1848,6 @@ int get_syscall(struct __test_metadata *_metadata, pid_t tracee) ...@@ -1838,10 +1848,6 @@ int get_syscall(struct __test_metadata *_metadata, pid_t tracee)
} }
#endif #endif
#if defined(__mips__)
if (SYSCALL_NUM(regs) == __NR_O32_Linux)
return regs.SYSCALL_SYSCALL_NUM;
#endif
return SYSCALL_NUM(regs); return SYSCALL_NUM(regs);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment