summaryrefslogtreecommitdiffstats
path: root/sys/kern/tty.c
diff options
context:
space:
mode:
authormbr <mbr@FreeBSD.org>2006-09-21 14:09:26 +0000
committermbr <mbr@FreeBSD.org>2006-09-21 14:09:26 +0000
commitcdbb778538b5215fa84e8dcac52a687508171fca (patch)
treed5bdd3004b1fe02aa87cb9534ee3abaa457303b5 /sys/kern/tty.c
parent9221681b1a1bd2c38b6899f2f356a13fb3a67ad5 (diff)
downloadFreeBSD-src-cdbb778538b5215fa84e8dcac52a687508171fca.zip
FreeBSD-src-cdbb778538b5215fa84e8dcac52a687508171fca.tar.gz
Back out rev. 1.258. The real race cause has been fixed
in rev. 1.241 of kern_proc.c. Requested by: jhb
Diffstat (limited to 'sys/kern/tty.c')
-rw-r--r--sys/kern/tty.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/kern/tty.c b/sys/kern/tty.c
index 4b86857..f5b7d91 100644
--- a/sys/kern/tty.c
+++ b/sys/kern/tty.c
@@ -1639,8 +1639,8 @@ ttymodem(struct tty *tp, int flag)
!ISSET(tp->t_cflag, CLOCAL)) {
SET(tp->t_state, TS_ZOMBIE);
CLR(tp->t_state, TS_CONNECTED);
- sx_slock(&proctree_lock); /* XXX: protect t_session */
if (tp->t_session) {
+ sx_slock(&proctree_lock);
if (tp->t_session->s_leader) {
struct proc *p;
@@ -1649,8 +1649,8 @@ ttymodem(struct tty *tp, int flag)
psignal(p, SIGHUP);
PROC_UNLOCK(p);
}
+ sx_sunlock(&proctree_lock);
}
- sx_sunlock(&proctree_lock);
ttyflush(tp, FREAD | FWRITE);
return (0);
}
OpenPOWER on IntegriCloud