mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-19 02:34:01 +08:00
selftests/seccomp: powerpc: Fix seccomp return value testing
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: 5d83c2b37d
("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>
This commit is contained in:
parent
f04cf78bbf
commit
46138329fa
@ -1750,6 +1750,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]
|
||||
|
Loading…
Reference in New Issue
Block a user