From: Colin Ian King colin.king@canonical.com
The error return being placed in regs.SYSCALL_RET is currently positive and this is causing test failures on s390x. The return value should be -EPERM rather than EPERM otherwise a failure is not detected and errno is not set accordingly on s390x.
Fixes: a33b2d0359a0 ("selftests/seccomp: Add tests for basic ptrace actions") Signed-off-by: Colin Ian King colin.king@canonical.com --- tools/testing/selftests/seccomp/seccomp_bpf.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/tools/testing/selftests/seccomp/seccomp_bpf.c b/tools/testing/selftests/seccomp/seccomp_bpf.c index 496a9a8c773a..957344884360 100644 --- a/tools/testing/selftests/seccomp/seccomp_bpf.c +++ b/tools/testing/selftests/seccomp/seccomp_bpf.c @@ -1706,7 +1706,7 @@ void change_syscall(struct __test_metadata *_metadata, #ifdef SYSCALL_NUM_RET_SHARE_REG TH_LOG("Can't modify syscall return on this architecture"); #else - regs.SYSCALL_RET = EPERM; + regs.SYSCALL_RET = -EPERM; #endif
#ifdef HAVE_GETREGS @@ -1850,7 +1850,7 @@ TEST_F(TRACE_syscall, ptrace_syscall_dropped) true);
/* Tracer should skip the open syscall, resulting in EPERM. */ - EXPECT_SYSCALL_RETURN(EPERM, syscall(__NR_openat)); + EXPECT_SYSCALL_RETURN(-EPERM, syscall(__NR_openat)); }
TEST_F(TRACE_syscall, syscall_allowed) @@ -1894,7 +1894,7 @@ TEST_F(TRACE_syscall, syscall_dropped) ASSERT_EQ(0, ret);
/* gettid has been skipped and an altered return value stored. */ - EXPECT_SYSCALL_RETURN(EPERM, syscall(__NR_gettid)); + EXPECT_SYSCALL_RETURN(-EPERM, syscall(__NR_gettid)); EXPECT_NE(self->mytid, syscall(__NR_gettid)); }