summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_exit.c
diff options
context:
space:
mode:
authored <ed@FreeBSD.org>2009-06-15 19:17:52 +0000
committered <ed@FreeBSD.org>2009-06-15 19:17:52 +0000
commit7de50e3afbbea1bd7bb7ea5fe5f087167ff7980e (patch)
treefa0fa19b7b868432e961c6655510a999e74566d3 /sys/kern/kern_exit.c
parentf950eed7d778168cbdc3411fb2604c92e03531b8 (diff)
downloadFreeBSD-src-7de50e3afbbea1bd7bb7ea5fe5f087167ff7980e.zip
FreeBSD-src-7de50e3afbbea1bd7bb7ea5fe5f087167ff7980e.tar.gz
Make tcsetsid(3) work on revoked TTYs.
Right now the only way to make tcsetsid(3)/TIOCSCTTY work, is by ensuring the session leader is dead. This means that an application that catches SIGHUPs and performs a sleep prevents us from assigning a new session leader. Change the code to make it work on revoked TTYs as well. This allows us to change init(8) to make the shutdown script run in a more clean environment.
Diffstat (limited to 'sys/kern/kern_exit.c')
-rw-r--r--sys/kern/kern_exit.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/kern/kern_exit.c b/sys/kern/kern_exit.c
index 37d0254..673707f 100644
--- a/sys/kern/kern_exit.c
+++ b/sys/kern/kern_exit.c
@@ -309,7 +309,7 @@ exit1(struct thread *td, int rv)
sp->s_ttyvp = NULL;
SESS_UNLOCK(sp);
- if (ttyvp != NULL) {
+ if (ttyvp != NULL && ttyvp->v_type != VBAD) {
/*
* Controlling process.
* Signal foreground pgrp and revoke access to
OpenPOWER on IntegriCloud