]> git.hungrycats.org Git - linux/commitdiff
ia64: From Linus/Paulus: reset restart_block function in
authorDavid Mosberger <davidm@tiger.hpl.hp.com>
Fri, 21 Nov 2003 06:08:13 +0000 (22:08 -0800)
committerDavid Mosberger <davidm@tiger.hpl.hp.com>
Fri, 21 Nov 2003 06:08:13 +0000 (22:08 -0800)
restore_sigcontext().  Also update ia32 subsystem accordingly.

arch/ia64/ia32/ia32_signal.c
arch/ia64/kernel/signal.c

index 82d929427b9206c375c2b75a354c87bab0ed0e7b..cec1ff13831d2f8f744ae7520f3f0707ad70a23f 100644 (file)
@@ -720,6 +720,9 @@ restore_sigcontext_ia32 (struct pt_regs *regs, struct sigcontext_ia32 *sc, int *
 {
        unsigned int err = 0;
 
+       /* Always make any pending restarted system calls return -EINTR */
+       current_thread_info()->restart_block.fn = do_no_restart_syscall;
+
        if (!access_ok(VERIFY_READ, sc, sizeof(*sc)))
                return(-EFAULT);
 
index 8a5fe9796974867bd3d7b17a0d06d78a6c54b4e5..4f98194b431bdd62914a3c5ec5fe9777a11d9c48 100644 (file)
@@ -115,6 +115,9 @@ restore_sigcontext (struct sigcontext *sc, struct sigscratch *scr)
        unsigned long ip, flags, nat, um, cfm;
        long err;
 
+       /* Always make any pending restarted system calls return -EINTR */
+       current_thread_info()->restart_block.fn = do_no_restart_syscall;
+
        /* restore scratch that always needs gets updated during signal delivery: */
        err  = __get_user(flags, &sc->sc_flags);
        err |= __get_user(nat, &sc->sc_nat);
@@ -559,9 +562,6 @@ ia64_do_signal (sigset_t *oldset, struct sigscratch *scr, long in_syscall)
 
                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 (restart) {
                        switch (errno) {
                              case ERESTART_RESTARTBLOCK: