From 0dde1c43fc3a789427aaa762ce87419981643e82 Mon Sep 17 00:00:00 2001 From: Bill Joy Date: Mon, 2 Jun 1980 19:39:56 -0800 Subject: [PATCH] (no message) SCCS-vsn: sys/kern/kern_proc.c 3.7 SCCS-vsn: sys/kern/tty.c 3.7 --- usr/src/sys/kern/kern_proc.c | 19 ++++++++++++++++--- usr/src/sys/kern/tty.c | 7 ++++++- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/usr/src/sys/kern/kern_proc.c b/usr/src/sys/kern/kern_proc.c index 4b14300854..16ab0018d3 100644 --- a/usr/src/sys/kern/kern_proc.c +++ b/usr/src/sys/kern/kern_proc.c @@ -1,4 +1,4 @@ -/* kern_proc.c 3.6 %H% */ +/* kern_proc.c 3.7 %H% */ #include "../h/param.h" #include "../h/systm.h" @@ -493,12 +493,25 @@ done: q->p_ppid = 1; wakeup((caddr_t)&proc[1]); /* - * Stopped or traced processes are killed + * Traced processes are killed * since their existence means someone is screwing up. + * Traced processes are sent a hangup and a continue. + * This is designed to be ``safe'' for setuid + * processes since they must be willing to tolerate + * hangups anyways. */ - if (q->p_stat == SSTOP || q->p_flag&STRC) { + if (q->p_flag&STRC) { q->p_flag &= ~STRC; psignal(q, SIGKILL); + } else if (q->p_stat == SSTOP) { + psignal(q, SIGHUP); + psignal(q, SIGCONT); + /* + * Protect this process from future + * tty signals, and clear TSTP if pending. + */ + q->p_pgrp = 0; + q->p_sig &= ~(1<<(SIGTSTP-1)); } } wakeup((caddr_t)p->p_pptr); diff --git a/usr/src/sys/kern/tty.c b/usr/src/sys/kern/tty.c index 6412d7aba1..2573225e66 100644 --- a/usr/src/sys/kern/tty.c +++ b/usr/src/sys/kern/tty.c @@ -1,4 +1,4 @@ -/* tty.c 3.6 %H% */ +/* tty.c 3.7 %H% */ /* * general TTY subroutines @@ -414,6 +414,11 @@ caddr_t addr; u.u_error = EFAULT; break; + case TIOCOUTQ: + if (copyout((caddr_t)&tp->t_outq.c_cc, addr, sizeof(tp->t_outq.c_cc))) + u.u_error = EFAULT; + break; + /* end of locals */ default: return(0); -- 2.20.1