diff options
author | alfred <alfred@FreeBSD.org> | 2004-10-30 02:56:22 +0000 |
---|---|---|
committer | alfred <alfred@FreeBSD.org> | 2004-10-30 02:56:22 +0000 |
commit | a2b1b554d22be63330952036565e44a945fd7e69 (patch) | |
tree | 740e72810feb3c821fb23b6c964bd946c92f6708 /sys/kern/kern_sig.c | |
parent | 53a6f1c0a3ec78dc7e22819a5ce8afa6deee733c (diff) | |
download | FreeBSD-src-a2b1b554d22be63330952036565e44a945fd7e69.zip FreeBSD-src-a2b1b554d22be63330952036565e44a945fd7e69.tar.gz |
Allow kill -9 to kill processes stuck in procfs STOPEVENTs.
Diffstat (limited to 'sys/kern/kern_sig.c')
-rw-r--r-- | sys/kern/kern_sig.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/sys/kern/kern_sig.c b/sys/kern/kern_sig.c index 5220ab4..3074950 100644 --- a/sys/kern/kern_sig.c +++ b/sys/kern/kern_sig.c @@ -1776,6 +1776,16 @@ do_tdsignal(struct thread *td, int sig, sigtarget_t target) !((prop & SA_CONT) && (p->p_flag & P_STOPPED_SIG))) return; /* + * SIGKILL: Remove procfs STOPEVENTs. + */ + if (sig == SIGKILL) { + /* from procfs_ioctl.c: PIOCBIC */ + p->p_stops = 0; + /* from procfs_ioctl.c: PIOCCONT */ + p->p_step = 0; + wakeup(&p->p_step); + } + /* * Some signals have a process-wide effect and a per-thread * component. Most processing occurs when the process next * tries to cross the user boundary, however there are some |