summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2006-11-17 14:52:38 +0000
committerkib <kib@FreeBSD.org>2006-11-17 14:52:38 +0000
commit5da2fd53cf2d5e1bbb6e88a0ebbbf7b24b4133bc (patch)
treeceab6664c981374fe24ec69ddb326a65741460bc
parentc1bbb4897db52a792d588b763572230221a4b6d3 (diff)
downloadFreeBSD-src-5da2fd53cf2d5e1bbb6e88a0ebbbf7b24b4133bc.zip
FreeBSD-src-5da2fd53cf2d5e1bbb6e88a0ebbbf7b24b4133bc.tar.gz
Wake up PIOCWAIT handler on the process exit in addition to the stop
events. &p->p_stype is explicitely woken up on process exit for us. Now, truss /nonexistent exits with error instead of waiting until killed by signal. Reported by: Nikos Vassiliadis nvass at teledomenet gr Reviewed by: jhb MFC after: 1 week
-rw-r--r--sys/fs/procfs/procfs_ioctl.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/fs/procfs/procfs_ioctl.c b/sys/fs/procfs/procfs_ioctl.c
index 04fe603..d737d96 100644
--- a/sys/fs/procfs/procfs_ioctl.c
+++ b/sys/fs/procfs/procfs_ioctl.c
@@ -124,7 +124,7 @@ procfs_ioctl(PFS_IOCTL_ARGS)
*(unsigned int *)data = p->p_pfsflags;
break;
case PIOCWAIT:
- while (p->p_step == 0) {
+ while (p->p_step == 0 && (p->p_flag & P_WEXIT) == 0) {
/* sleep until p stops */
error = msleep(&p->p_stype, &p->p_mtx,
PWAIT|PCATCH, "pioctl", 0);
@@ -142,7 +142,7 @@ procfs_ioctl(PFS_IOCTL_ARGS)
break;
#ifdef COMPAT_IA32
case PIOCWAIT32:
- while (p->p_step == 0) {
+ while (p->p_step == 0 && (p->p_flag & P_WEXIT) == 0) {
/* sleep until p stops */
error = msleep(&p->p_stype, &p->p_mtx,
PWAIT|PCATCH, "pioctl", 0);
OpenPOWER on IntegriCloud