diff --git a/sys/kern/kern_proc.c b/sys/kern/kern_proc.c index 55f7e189e026..e45a4890fbe1 100644 --- a/sys/kern/kern_proc.c +++ b/sys/kern/kern_proc.c @@ -506,7 +506,6 @@ pgdelete(pgrp) if (tp != NULL) { tty_lock(tp); tty_rel_pgrp(tp, pgrp); - tty_unlock(tp); } mtx_destroy(&pgrp->pg_mtx); diff --git a/sys/kern/tty.c b/sys/kern/tty.c index bb0fb02c99f0..cd6a246f8fa1 100644 --- a/sys/kern/tty.c +++ b/sys/kern/tty.c @@ -940,10 +940,13 @@ tty_rel_free(struct tty *tp) void tty_rel_pgrp(struct tty *tp, struct pgrp *pg) { + MPASS(tp->t_sessioncnt > 0); tty_lock_assert(tp, MA_OWNED); if (tp->t_pgrp == pg) tp->t_pgrp = NULL; + + tty_unlock(tp); } void