return -EINVAL;
                if (copy_from_user(&ksigmask, sigmask, sizeof(ksigmask)))
                        return -EFAULT;
-               sigdelsetmask(&ksigmask, sigmask(SIGKILL) | sigmask(SIGSTOP));
-               sigprocmask(SIG_SETMASK, &ksigmask, &sigsaved);
+               sigsaved = current->blocked;
+               set_current_blocked(&ksigmask);
        }
 
        error = sys_epoll_wait(epfd, events, maxevents, timeout);
                               sizeof(sigsaved));
                        set_restore_sigmask();
                } else
-                       sigprocmask(SIG_SETMASK, &sigsaved, NULL);
+                       set_current_blocked(&sigsaved);
        }
 
        return error;
                if (copy_from_user(&csigmask, sigmask, sizeof(csigmask)))
                        return -EFAULT;
                sigset_from_compat(&ksigmask, &csigmask);
-               sigdelsetmask(&ksigmask, sigmask(SIGKILL) | sigmask(SIGSTOP));
-               sigprocmask(SIG_SETMASK, &ksigmask, &sigsaved);
+               sigsaved = current->blocked;
+               set_current_blocked(&ksigmask);
        }
 
        err = sys_epoll_wait(epfd, events, maxevents, timeout);
                               sizeof(sigsaved));
                        set_restore_sigmask();
                } else
-                       sigprocmask(SIG_SETMASK, &sigsaved, NULL);
+                       set_current_blocked(&sigsaved);
        }
 
        return err;