diff options
author | mbr <mbr@FreeBSD.org> | 2006-09-21 14:09:26 +0000 |
---|---|---|
committer | mbr <mbr@FreeBSD.org> | 2006-09-21 14:09:26 +0000 |
commit | cdbb778538b5215fa84e8dcac52a687508171fca (patch) | |
tree | d5bdd3004b1fe02aa87cb9534ee3abaa457303b5 /sys/kern/tty.c | |
parent | 9221681b1a1bd2c38b6899f2f356a13fb3a67ad5 (diff) | |
download | FreeBSD-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.c | 4 |
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); } |