lkml.org 
[lkml]   [2020]   [Oct]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.9 154/757] selftests/seccomp: powerpc: Fix seccomp return value testing
    Date
    From: Kees Cook <keescook@chromium.org>

    [ Upstream commit 46138329faeac3598f5a4dc991a174386b6de833 ]

    On powerpc, the errno is not inverted, and depends on ccr.so being
    set. Add this to a powerpc definition of SYSCALL_RET_SET().

    Co-developed-by: Thadeu Lima de Souza Cascardo <cascardo@canonical.com>
    Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@canonical.com>
    Link: https://lore.kernel.org/linux-kselftest/20200911181012.171027-1-cascardo@canonical.com/
    Fixes: 5d83c2b37d43 ("selftests/seccomp: Add powerpc support")
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Link: https://lore.kernel.org/lkml/20200912110820.597135-13-keescook@chromium.org
    Reviewed-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    tools/testing/selftests/seccomp/seccomp_bpf.c | 15 +++++++++++++++
    1 file changed, 15 insertions(+)

    diff --git a/tools/testing/selftests/seccomp/seccomp_bpf.c b/tools/testing/selftests/seccomp/seccomp_bpf.c
    index e2f38507a0621..9a9eb02539fb4 100644
    --- a/tools/testing/selftests/seccomp/seccomp_bpf.c
    +++ b/tools/testing/selftests/seccomp/seccomp_bpf.c
    @@ -1702,6 +1702,21 @@ TEST_F(TRACE_poke, getpid_runs_normally)
    # define ARCH_REGS struct pt_regs
    # define SYSCALL_NUM(_regs) (_regs).gpr[0]
    # define SYSCALL_RET(_regs) (_regs).gpr[3]
    +# define SYSCALL_RET_SET(_regs, _val) \
    + do { \
    + typeof(_val) _result = (_val); \
    + /* \
    + * A syscall error is signaled by CR0 SO bit \
    + * and the code is stored as a positive value. \
    + */ \
    + if (_result < 0) { \
    + SYSCALL_RET(_regs) = -result; \
    + (_regs).ccr |= 0x10000000; \
    + } else { \
    + SYSCALL_RET(_regs) = result; \
    + (_regs).ccr &= ~0x10000000; \
    + } \
    + } while (0)
    #elif defined(__s390__)
    # define ARCH_REGS s390_regs
    # define SYSCALL_NUM(_regs) (_regs).gprs[2]
    --
    2.25.1


    \
     
     \ /
      Last update: 2020-10-27 17:10    [W:2.775 / U:0.804 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site