From 7b4bd48d197a5630669fa6ffe5d06f8a605f1b1d Mon Sep 17 00:00:00 2001 From: Al Viro Date: Sun, 26 Sep 2010 19:28:42 +0100 Subject: [PATCH] --- yaml --- r: 211009 b: refs/heads/master c: 00cbf6080c7d60b999864afcd9010e0bbc7c5db6 h: refs/heads/master i: 211007: cd26554a74060d30ea998ad55a2d005e11dfb286 v: v3 --- [refs] | 2 +- trunk/arch/mn10300/kernel/signal.c | 12 +++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 8f85418c1eb8..0eedc9c6d323 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: e46924d246e028c94689087db0699438343a344e +refs/heads/master: 00cbf6080c7d60b999864afcd9010e0bbc7c5db6 diff --git a/trunk/arch/mn10300/kernel/signal.c b/trunk/arch/mn10300/kernel/signal.c index 57178a8d5af0..4ef99256fa49 100644 --- a/trunk/arch/mn10300/kernel/signal.c +++ b/trunk/arch/mn10300/kernel/signal.c @@ -432,6 +432,12 @@ static int setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info, return -EFAULT; } +static inline void stepback(struct pt_regs *regs) +{ + regs->pc -= 2; + regs->orig_d0 = -1; +} + /* * handle the actual delivery of a signal to userspace */ @@ -459,7 +465,7 @@ static int handle_signal(int sig, /* fallthrough */ case -ERESTARTNOINTR: regs->d0 = regs->orig_d0; - regs->pc -= 2; + stepback(regs); } } @@ -527,12 +533,12 @@ static void do_signal(struct pt_regs *regs) case -ERESTARTSYS: case -ERESTARTNOINTR: regs->d0 = regs->orig_d0; - regs->pc -= 2; + stepback(regs); break; case -ERESTART_RESTARTBLOCK: regs->d0 = __NR_restart_syscall; - regs->pc -= 2; + stepback(regs); break; } }