projects
/
unix-history
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
tags
|
clone url
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
(no message)
[unix-history]
/
usr
/
src
/
sys
/
kern
/
kern_proc.c
diff --git
a/usr/src/sys/kern/kern_proc.c
b/usr/src/sys/kern/kern_proc.c
index
4b14300
..
16ab001
100644
(file)
--- 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"
#include "../h/param.h"
#include "../h/systm.h"
@@
-493,12
+493,25
@@
done:
q->p_ppid = 1;
wakeup((caddr_t)&proc[1]);
/*
q->p_ppid = 1;
wakeup((caddr_t)&proc[1]);
/*
- *
Stopped or t
raced processes are killed
+ *
T
raced processes are killed
* since their existence means someone is screwing up.
* 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);
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);
}
}
wakeup((caddr_t)p->p_pptr);