From 910cd32e552ea09caa89cdbe328e468979b030dd Mon Sep 17 00:00:00 2001 From: Helge Deller Date: Wed, 30 Mar 2016 14:14:31 +0200 Subject: parisc: Fix and enable seccomp filter support The seccomp filter support requires careful handling of task registers. This includes reloading of the return value (%r28) and proper syscall exit if secure_computing() returned -1. Additionally we need to sign-extend the syscall number from signed 32bit to signed 64bit in do_syscall_trace_enter() since the ptrace interface only allows storing 32bit values in compat mode. Signed-off-by: Helge Deller Cc: stable@vger.kernel.org # v4.5 --- arch/parisc/include/asm/syscall.h | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'arch/parisc/include/asm') diff --git a/arch/parisc/include/asm/syscall.h b/arch/parisc/include/asm/syscall.h index a5eba95..637ce8d 100644 --- a/arch/parisc/include/asm/syscall.h +++ b/arch/parisc/include/asm/syscall.h @@ -39,6 +39,19 @@ static inline void syscall_get_arguments(struct task_struct *tsk, } } +static inline void syscall_set_return_value(struct task_struct *task, + struct pt_regs *regs, + int error, long val) +{ + regs->gr[28] = error ? error : val; +} + +static inline void syscall_rollback(struct task_struct *task, + struct pt_regs *regs) +{ + /* do nothing */ +} + static inline int syscall_get_arch(void) { int arch = AUDIT_ARCH_PARISC; -- cgit v1.1