diff options
author | kib <kib@FreeBSD.org> | 2006-11-17 14:52:38 +0000 |
---|---|---|
committer | kib <kib@FreeBSD.org> | 2006-11-17 14:52:38 +0000 |
commit | 5da2fd53cf2d5e1bbb6e88a0ebbbf7b24b4133bc (patch) | |
tree | ceab6664c981374fe24ec69ddb326a65741460bc | |
parent | c1bbb4897db52a792d588b763572230221a4b6d3 (diff) | |
download | FreeBSD-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.c | 4 |
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); |