From 5a6e63358e38daf3d4066220aa3e72a79590ad47 Mon Sep 17 00:00:00 2001 From: "David S. Miller" Date: Mon, 17 Nov 2003 02:13:00 -0800 Subject: [PATCH] [SPARC]: Update to changeset 1.1445 version of signal fix. --- arch/sparc/kernel/signal.c | 9 +++------ arch/sparc64/kernel/signal.c | 9 +++------ arch/sparc64/kernel/signal32.c | 12 ++++++------ 3 files changed, 12 insertions(+), 18 deletions(-) diff --git a/arch/sparc/kernel/signal.c b/arch/sparc/kernel/signal.c index 74fe483af5b79..8036e8c115b5f 100644 --- a/arch/sparc/kernel/signal.c +++ b/arch/sparc/kernel/signal.c @@ -284,6 +284,9 @@ asmlinkage void do_sigreturn(struct pt_regs *regs) sigset_t set; int err; + /* Always make any pending restarted system calls return -EINTR */ + current_thread_info()->restart_block.fn = do_no_restart_syscall; + synchronize_user_stack(); if (current->thread.new_signal) @@ -1085,12 +1088,6 @@ asmlinkage int do_signal(sigset_t *oldset, struct pt_regs * regs, ka = ¤t->sighand->action[signr-1]; - /* Always make any pending restarted system - * calls return -EINTR. - */ - current_thread_info()->restart_block.fn = - do_no_restart_syscall; - if (cookie.restart_syscall) syscall_restart(cookie.orig_i0, regs, &ka->sa); handle_signal(signr, ka, &info, oldset, regs, svr4_signal); diff --git a/arch/sparc64/kernel/signal.c b/arch/sparc64/kernel/signal.c index 5a4142d9b888f..bebd76756bd98 100644 --- a/arch/sparc64/kernel/signal.c +++ b/arch/sparc64/kernel/signal.c @@ -382,6 +382,9 @@ void do_rt_sigreturn(struct pt_regs *regs) stack_t st; int err; + /* Always make any pending restarted system calls return -EINTR */ + current_thread_info()->restart_block.fn = do_no_restart_syscall; + synchronize_user_stack (); sf = (struct rt_signal_frame __user *) (regs->u_regs [UREG_FP] + STACK_BIAS); @@ -627,12 +630,6 @@ static int do_signal(sigset_t *oldset, struct pt_regs * regs, ka = ¤t->sighand->action[signr-1]; - /* Always make any pending restarted system - * calls return -EINTR. - */ - current_thread_info()->restart_block.fn = - do_no_restart_syscall; - if (cookie.restart_syscall) syscall_restart(orig_i0, regs, &ka->sa); handle_signal(signr, ka, &info, oldset, regs); diff --git a/arch/sparc64/kernel/signal32.c b/arch/sparc64/kernel/signal32.c index b0cac6c0fad33..cb1ffd005b9b2 100644 --- a/arch/sparc64/kernel/signal32.c +++ b/arch/sparc64/kernel/signal32.c @@ -331,6 +331,9 @@ asmlinkage void do_sigreturn32(struct pt_regs *regs) unsigned int seta[_COMPAT_NSIG_WORDS]; int err; + /* Always make any pending restarted system calls return -EINTR */ + current_thread_info()->restart_block.fn = do_no_restart_syscall; + synchronize_user_stack(); if (test_thread_flag(TIF_NEWSIGNALS)) return do_new_sigreturn32(regs); @@ -398,6 +401,9 @@ asmlinkage void do_rt_sigreturn32(struct pt_regs *regs) stack_t st; int err, i; + /* Always make any pending restarted system calls return -EINTR */ + current_thread_info()->restart_block.fn = do_no_restart_syscall; + synchronize_user_stack(); regs->u_regs[UREG_FP] &= 0x00000000ffffffffUL; sf = (struct rt_signal_frame32 __user *) regs->u_regs[UREG_FP]; @@ -1258,12 +1264,6 @@ int do_signal32(sigset_t *oldset, struct pt_regs * regs, ka = ¤t->sighand->action[signr-1]; - /* Always make any pending restarted system - * calls return -EINTR. - */ - current_thread_info()->restart_block.fn = - do_no_restart_syscall; - if (cookie.restart_syscall) syscall_restart32(orig_i0, regs, &ka->sa); handle_signal32(signr, ka, &info, oldset, regs, svr4_signal); -- 2.53.0