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); @@ -403,6 +400,11 @@ cv_broadcast(&tp->t_bgwait); cv_broadcast(&tp->t_dcdwait); + if (fflag & FREVOKE) { + knlist_delete(&tp->t_inpoll.si_note, curthread, 1); + knlist_delete(&tp->t_outpoll.si_note, curthread, 1); + } + ttydev_leave(tp); return (0);