tty stop signals shouldn't stop sleeping procs in orphaned pgrps
authorMike Karels <karels@ucbvax.Berkeley.EDU>
Sun, 2 Dec 1990 06:22:38 +0000 (22:22 -0800)
committerMike Karels <karels@ucbvax.Berkeley.EDU>
Sun, 2 Dec 1990 06:22:38 +0000 (22:22 -0800)
SCCS-vsn: sys/kern/kern_sig.c 7.24

usr/src/sys/kern/kern_sig.c

index cbfdd90..21d605b 100644 (file)
@@ -4,7 +4,7 @@
  *
  * %sccs.include.redist.c%
  *
  *
  * %sccs.include.redist.c%
  *
- *     @(#)kern_sig.c  7.23 (Berkeley) %G%
+ *     @(#)kern_sig.c  7.24 (Berkeley) %G%
  */
 
 #include "param.h"
  */
 
 #include "param.h"
@@ -582,6 +582,16 @@ psignal(p, sig)
        case SIGTSTP:
        case SIGTTIN:
        case SIGTTOU:
        case SIGTSTP:
        case SIGTTIN:
        case SIGTTOU:
+               /*
+                * If sending a tty stop signal to a member of an orphaned
+                * process group, discard the signal here if the action
+                * is default; don't stop the process below if sleeping,
+                * and don't clear any pending SIGCONT.
+                */
+               if (p->p_pgrp->pg_jobc == 0 && action == SIG_DFL)
+                       return;
+               /* FALLTHROUGH */
+
        case SIGSTOP:
                p->p_sig &= ~sigmask(SIGCONT);
                break;
        case SIGSTOP:
                p->p_sig &= ~sigmask(SIGCONT);
                break;