]> git.hungrycats.org Git - linux/commitdiff
[SPARC]: Update to changeset 1.1445 version of signal fix.
authorDavid S. Miller <davem@nuts.ninka.net>
Mon, 17 Nov 2003 10:13:00 +0000 (02:13 -0800)
committerDavid S. Miller <davem@nuts.ninka.net>
Mon, 17 Nov 2003 10:13:00 +0000 (02:13 -0800)
arch/sparc/kernel/signal.c
arch/sparc64/kernel/signal.c
arch/sparc64/kernel/signal32.c

index 74fe483af5b79d8c91446785a4fc783c50b385f1..8036e8c115b5f74a0cd118ba1ebe5973f8b6b360 100644 (file)
@@ -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 = &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)
                        syscall_restart(cookie.orig_i0, regs, &ka->sa);
                handle_signal(signr, ka, &info, oldset, regs, svr4_signal);
index 5a4142d9b888faa4a403383399bf8ce0ff885a51..bebd76756bd982edda5789b6321077a73e22dd98 100644 (file)
@@ -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 = &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)
                        syscall_restart(orig_i0, regs, &ka->sa);
                handle_signal(signr, ka, &info, oldset, regs);
index b0cac6c0fad3338e9fa028a1d4412b8b9b54b009..cb1ffd005b9b2f776e4be65f3bbcc52d183d1187 100644 (file)
@@ -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 = &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)
                        syscall_restart32(orig_i0, regs, &ka->sa);
                handle_signal32(signr, ka, &info, oldset, regs, svr4_signal);