]> Zhao Yanbai Git Server - minix.git/commitdiff
SIGSTOP can't be masked (report by Jaap Weel).
authorBen Gras <ben@minix3.org>
Mon, 12 Dec 2005 13:11:22 +0000 (13:11 +0000)
committerBen Gras <ben@minix3.org>
Mon, 12 Dec 2005 13:11:22 +0000 (13:11 +0000)
servers/pm/signal.c

index dee78d54614204c2d11fb88f2d66b450ac74c130..6765d4735d443224ca7663f4201f94cce6342349 100644 (file)
@@ -113,6 +113,8 @@ PUBLIC int do_sigprocmask()
  *
  * The library interface must set SIG_INQUIRE if the 'act' argument
  * is NULL.
+ *
+ * KILL and STOP can't be masked.
  */
 
   int i;
@@ -122,6 +124,7 @@ PUBLIC int do_sigprocmask()
   switch (m_in.sig_how) {
       case SIG_BLOCK:
        sigdelset((sigset_t *)&m_in.sig_set, SIGKILL);
+       sigdelset((sigset_t *)&m_in.sig_set, SIGSTOP);
        for (i = 1; i <= _NSIG; i++) {
                if (sigismember((sigset_t *)&m_in.sig_set, i))
                        sigaddset(&mp->mp_sigmask, i);
@@ -138,6 +141,7 @@ PUBLIC int do_sigprocmask()
 
       case SIG_SETMASK:
        sigdelset((sigset_t *) &m_in.sig_set, SIGKILL);
+       sigdelset((sigset_t *) &m_in.sig_set, SIGSTOP);
        mp->mp_sigmask = (sigset_t) m_in.sig_set;
        check_pending(mp);
        break;