MIPS: ptrace: Fix regs_return_value for kernel context

Currently regs_return_value always negates reg[2] if it determines
the syscall has failed, but when called in kernel context this check is
invalid and may result in returning a wrong value.

This fixes errors reported by CONFIG_KPROBES_SANITY_TEST

Fixes: d7e7528bcd45 ("Audit: push audit success and retcode into arch ptrace.h")
Signed-off-by: Marcin Nowakowski <marcin.nowakowski@imgtec.com>
Cc: linux-mips@linux-mips.org
Cc: stable@vger.kernel.org # 3.3+
Patchwork: https://patchwork.linux-mips.org/patch/14381/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>

authored by Marcin Nowakowski and committed by Ralf Baechle 74f1077b 9445622c

Changed files
+1 -1
arch
mips
include
asm
+1 -1
arch/mips/include/asm/ptrace.h
··· 152 152 153 153 static inline long regs_return_value(struct pt_regs *regs) 154 154 { 155 - if (is_syscall_success(regs)) 155 + if (is_syscall_success(regs) || !user_mode(regs)) 156 156 return regs->regs[2]; 157 157 else 158 158 return -regs->regs[2];