regs->UCreg_00 == -ERESTARTNOINTR) {
                        setup_syscall_restart(regs);
                }
-
-               /* If there's no signal to deliver, we just put the saved
-                * sigmask back.
-                */
-               if (test_thread_flag(TIF_RESTORE_SIGMASK)) {
-                       clear_thread_flag(TIF_RESTORE_SIGMASK);
-                       sigprocmask(SIG_SETMASK, ¤t->saved_sigmask, NULL);
-               }
        }
+       /* If there's no signal to deliver, we just put the saved
+        * sigmask back.
+        */
+       if (test_and_clear_thread_flag(TIF_RESTORE_SIGMASK))
+               set_current_blocked(¤t->saved_sigmask);
 }
 
 asmlinkage void do_notify_resume(struct pt_regs *regs,