Page MenuHomeFreeBSD

D41605.diff
No OneTemporary

D41605.diff

diff --git a/sys/kern/tty.c b/sys/kern/tty.c
--- a/sys/kern/tty.c
+++ b/sys/kern/tty.c
@@ -253,9 +253,6 @@
ttyoutq_free(&tp->t_outq);
tp->t_outlow = 0;
- knlist_clear(&tp->t_inpoll.si_note, 1);
- knlist_clear(&tp->t_outpoll.si_note, 1);
-
if (!tty_gone(tp))
ttydevsw_close(tp);
@@ -369,7 +366,7 @@
static int
ttydev_close(struct cdev *dev, int fflag, int devtype __unused,
- struct thread *td __unused)
+ struct thread *td)
{
struct tty *tp = dev->si_drv1;
@@ -392,8 +389,11 @@
}
/* If revoking, flush output now to avoid draining it later. */
- if (fflag & FREVOKE)
+ if ((fflag & FREVOKE) != 0) {
tty_flush(tp, FWRITE);
+ knlist_delete(&tp->t_inpoll.si_note, td, 1);
+ knlist_delete(&tp->t_outpoll.si_note, td, 1);
+ }
tp->t_flags &= ~TF_EXCLUDE;
@@ -1120,6 +1120,8 @@
ttyoutq_free(&tp->t_outq);
seldrain(&tp->t_inpoll);
seldrain(&tp->t_outpoll);
+ knlist_clear(&tp->t_inpoll.si_note, 0);
+ knlist_clear(&tp->t_outpoll.si_note, 0);
knlist_destroy(&tp->t_inpoll.si_note);
knlist_destroy(&tp->t_outpoll.si_note);

File Metadata

Mime Type
text/plain
Expires
Sat, Sep 28, 1:01 PM (19 h, 42 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
13029185
Default Alt Text
D41605.diff (1 KB)

Event Timeline