summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2022-08-08 18:08:48 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2022-08-25 12:38:03 +0300
commitf20bc59ccf9e4502375b4eb90268c968341a86e4 (patch)
tree7d06f25db28a77d695b76cdee188974fea184f3d /arch
parent8d0118a027e3c9ab39e31b1fafdb7103922ef3c3 (diff)
downloadlinux-f20bc59ccf9e4502375b4eb90268c968341a86e4.tar.xz
nios2: fix syscall restart checks
commit 2d631bd58fe0ea3e3350212e23c9aba1fb606514 upstream. sys_foo() returns -512 (aka -ERESTARTSYS) => do_signal() sees 512 in r2 and 1 in r1. sys_foo() returns 512 => do_signal() sees 512 in r2 and 0 in r1. The former is restart-worthy; the latter obviously isn't. Fixes: b53e906d255d ("nios2: Signal handling support") Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Dinh Nguyen <dinguyen@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'arch')
-rw-r--r--arch/nios2/kernel/signal.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/nios2/kernel/signal.c b/arch/nios2/kernel/signal.c
index e45491d1d3e4..d5000d494699 100644
--- a/arch/nios2/kernel/signal.c
+++ b/arch/nios2/kernel/signal.c
@@ -242,7 +242,7 @@ static int do_signal(struct pt_regs *regs)
/*
* If we were from a system call, check for system call restarting...
*/
- if (regs->orig_r2 >= 0) {
+ if (regs->orig_r2 >= 0 && regs->r1) {
continue_addr = regs->ea;
restart_addr = continue_addr - 4;
retval = regs->r2;