summaryrefslogtreecommitdiffstats
path: root/sys/kern/tty.c
diff options
context:
space:
mode:
authormarcel <marcel@FreeBSD.org>2014-02-16 20:37:39 +0000
committermarcel <marcel@FreeBSD.org>2014-02-16 20:37:39 +0000
commit091cb7eeead861afb7b7435107b27bc02db862b7 (patch)
treee356cf823a0d157c7d5165bdefc03d8948bdf6b1 /sys/kern/tty.c
parent6c90e2f6f5fb6d9ef6c6dab9355bba8c385b56d5 (diff)
downloadFreeBSD-src-091cb7eeead861afb7b7435107b27bc02db862b7.zip
FreeBSD-src-091cb7eeead861afb7b7435107b27bc02db862b7.tar.gz
MFC r259441:
Properly drain the TTY when both revoke(2) and close(2) end up closing the TTY.
Diffstat (limited to 'sys/kern/tty.c')
-rw-r--r--sys/kern/tty.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/kern/tty.c b/sys/kern/tty.c
index 4fce607..e181d1e 100644
--- a/sys/kern/tty.c
+++ b/sys/kern/tty.c
@@ -191,8 +191,10 @@ ttydev_leave(struct tty *tp)
/* Drain any output. */
MPASS((tp->t_flags & TF_STOPPED) == 0);
- if (!tty_gone(tp))
- tty_drain(tp);
+ if (!tty_gone(tp)) {
+ while (tty_drain(tp) == ERESTART)
+ ;
+ }
ttydisc_close(tp);
OpenPOWER on IntegriCloud