Commit 5a6e6335 authored by David S. Miller's avatar David S. Miller

[SPARC]: Update to changeset 1.1445 version of signal fix.

parent f2b4a98e
...@@ -284,6 +284,9 @@ asmlinkage void do_sigreturn(struct pt_regs *regs) ...@@ -284,6 +284,9 @@ asmlinkage void do_sigreturn(struct pt_regs *regs)
sigset_t set; sigset_t set;
int err; int err;
/* Always make any pending restarted system calls return -EINTR */
current_thread_info()->restart_block.fn = do_no_restart_syscall;
synchronize_user_stack(); synchronize_user_stack();
if (current->thread.new_signal) if (current->thread.new_signal)
...@@ -1085,12 +1088,6 @@ asmlinkage int do_signal(sigset_t *oldset, struct pt_regs * regs, ...@@ -1085,12 +1088,6 @@ asmlinkage int do_signal(sigset_t *oldset, struct pt_regs * regs,
ka = &current->sighand->action[signr-1]; ka = &current->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) if (cookie.restart_syscall)
syscall_restart(cookie.orig_i0, regs, &ka->sa); syscall_restart(cookie.orig_i0, regs, &ka->sa);
handle_signal(signr, ka, &info, oldset, regs, svr4_signal); handle_signal(signr, ka, &info, oldset, regs, svr4_signal);
......
...@@ -382,6 +382,9 @@ void do_rt_sigreturn(struct pt_regs *regs) ...@@ -382,6 +382,9 @@ void do_rt_sigreturn(struct pt_regs *regs)
stack_t st; stack_t st;
int err; int err;
/* Always make any pending restarted system calls return -EINTR */
current_thread_info()->restart_block.fn = do_no_restart_syscall;
synchronize_user_stack (); synchronize_user_stack ();
sf = (struct rt_signal_frame __user *) sf = (struct rt_signal_frame __user *)
(regs->u_regs [UREG_FP] + STACK_BIAS); (regs->u_regs [UREG_FP] + STACK_BIAS);
...@@ -627,12 +630,6 @@ static int do_signal(sigset_t *oldset, struct pt_regs * regs, ...@@ -627,12 +630,6 @@ static int do_signal(sigset_t *oldset, struct pt_regs * regs,
ka = &current->sighand->action[signr-1]; ka = &current->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) if (cookie.restart_syscall)
syscall_restart(orig_i0, regs, &ka->sa); syscall_restart(orig_i0, regs, &ka->sa);
handle_signal(signr, ka, &info, oldset, regs); handle_signal(signr, ka, &info, oldset, regs);
......
...@@ -331,6 +331,9 @@ asmlinkage void do_sigreturn32(struct pt_regs *regs) ...@@ -331,6 +331,9 @@ asmlinkage void do_sigreturn32(struct pt_regs *regs)
unsigned int seta[_COMPAT_NSIG_WORDS]; unsigned int seta[_COMPAT_NSIG_WORDS];
int err; int err;
/* Always make any pending restarted system calls return -EINTR */
current_thread_info()->restart_block.fn = do_no_restart_syscall;
synchronize_user_stack(); synchronize_user_stack();
if (test_thread_flag(TIF_NEWSIGNALS)) if (test_thread_flag(TIF_NEWSIGNALS))
return do_new_sigreturn32(regs); return do_new_sigreturn32(regs);
...@@ -398,6 +401,9 @@ asmlinkage void do_rt_sigreturn32(struct pt_regs *regs) ...@@ -398,6 +401,9 @@ asmlinkage void do_rt_sigreturn32(struct pt_regs *regs)
stack_t st; stack_t st;
int err, i; 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(); synchronize_user_stack();
regs->u_regs[UREG_FP] &= 0x00000000ffffffffUL; regs->u_regs[UREG_FP] &= 0x00000000ffffffffUL;
sf = (struct rt_signal_frame32 __user *) regs->u_regs[UREG_FP]; 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, ...@@ -1258,12 +1264,6 @@ int do_signal32(sigset_t *oldset, struct pt_regs * regs,
ka = &current->sighand->action[signr-1]; ka = &current->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) if (cookie.restart_syscall)
syscall_restart32(orig_i0, regs, &ka->sa); syscall_restart32(orig_i0, regs, &ka->sa);
handle_signal32(signr, ka, &info, oldset, regs, svr4_signal); handle_signal32(signr, ka, &info, oldset, regs, svr4_signal);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment