summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_sig.c
diff options
context:
space:
mode:
authoralfred <alfred@FreeBSD.org>2004-10-30 02:56:22 +0000
committeralfred <alfred@FreeBSD.org>2004-10-30 02:56:22 +0000
commita2b1b554d22be63330952036565e44a945fd7e69 (patch)
tree740e72810feb3c821fb23b6c964bd946c92f6708 /sys/kern/kern_sig.c
parent53a6f1c0a3ec78dc7e22819a5ce8afa6deee733c (diff)
downloadFreeBSD-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.c10
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
OpenPOWER on IntegriCloud