parisc: resetting ->restart_block.fn needs to be done on rt_sigreturn()
authorAl Viro <viro@zeniv.linux.org.uk>
Sun, 22 Apr 2012 07:15:40 +0000 (03:15 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Tue, 22 May 2012 03:52:38 +0000 (23:52 -0400)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
arch/parisc/kernel/signal.c

index bd36152..4b9cb0d 100644 (file)
@@ -109,6 +109,7 @@ sys_rt_sigreturn(struct pt_regs *regs, int in_syscall)
                sigframe_size = PARISC_RT_SIGFRAME_SIZE32;
 #endif
 
+       current_thread_info()->restart_block.fn = do_no_restart_syscall;
 
        /* Unwind the user stack to get the rt_sigframe structure. */
        frame = (struct rt_sigframe __user *)
@@ -466,8 +467,6 @@ syscall_restart(struct pt_regs *regs, struct k_sigaction *ka)
        /* Check the return code */
        switch (regs->gr[28]) {
        case -ERESTART_RESTARTBLOCK:
-               current_thread_info()->restart_block.fn =
-                       do_no_restart_syscall;
        case -ERESTARTNOHAND:
                DBG(1,"ERESTARTNOHAND: returning -EINTR\n");
                regs->gr[28] = -EINTR;