Gitweb: http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=c8bfa1fdc84af7b5e3c7f825a9f0bc6e8a19f5d5 Commit: c8bfa1fdc84af7b5e3c7f825a9f0bc6e8a19f5d5 Parent: 9432f96803139adaff0cd9f4fa38b7fb99cda366 Author: Ryusuke Sakato <[EMAIL PROTECTED]> AuthorDate: Fri Feb 23 13:22:56 2007 +0900 Committer: Paul Mundt <[EMAIL PROTECTED]> CommitDate: Mon Mar 5 14:13:25 2007 +0900
sh: Fix sigmask trampling in signal delivery. There was a missing return in do_signal() that caused the saved sigmask to be written back after having successfully delivered the signal. Signed-off-by: Ryusuke Sakato <[EMAIL PROTECTED]> Signed-off-by: Paul Mundt <[EMAIL PROTECTED]> --- arch/sh/kernel/signal.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) diff --git a/arch/sh/kernel/signal.c b/arch/sh/kernel/signal.c index 32f10a0..9f39ef1 100644 --- a/arch/sh/kernel/signal.c +++ b/arch/sh/kernel/signal.c @@ -589,6 +589,8 @@ static void do_signal(struct pt_regs *regs, unsigned int save_r0) if (test_thread_flag(TIF_RESTORE_SIGMASK)) clear_thread_flag(TIF_RESTORE_SIGMASK); } + + return; } no_signal: @@ -598,7 +600,7 @@ static void do_signal(struct pt_regs *regs, unsigned int save_r0) if (regs->regs[0] == -ERESTARTNOHAND || regs->regs[0] == -ERESTARTSYS || regs->regs[0] == -ERESTARTNOINTR) { - regs->regs[0] = save_r0; + regs->regs[0] = save_r0; regs->pc -= 2; } else if (regs->regs[0] == -ERESTART_RESTARTBLOCK) { regs->pc -= 2; - To unsubscribe from this list: send the line "unsubscribe git-commits-head" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html