kernel - Fix panic when X11 intercepts console (III)
authorMatthew Dillon <dillon@apollo.backplane.com>
Mon, 6 Sep 2010 20:48:21 +0000 (13:48 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Mon, 6 Sep 2010 20:48:21 +0000 (13:48 -0700)
* Oops, ripped a little too much out of kputchar().  Put the TOTTY
  logic back in for the tprintf()/uprintf()/ttyprintf() cases.

* The console logic remains unchanged for kprintf() (it no longer
  attempts to tputchar() to a console tty intercept, instead we have
  a thread handle it from the dmesg buffer).

sys/kern/subr_prf.c

index fb532a3..4de2bea 100644 (file)
@@ -158,7 +158,6 @@ uprintf(const char *fmt, ...)
 tpr_t
 tprintf_open(struct proc *p)
 {
-
        if ((p->p_flag & P_CONTROLT) && p->p_session->s_ttyvp) {
                sess_hold(p->p_session);
                return ((tpr_t) p->p_session);
@@ -380,6 +379,8 @@ kputchar(int c, void *arg)
                constty = NULL;
        if ((flags & TOCONS) && tp == NULL && constty)
                flags |= TOLOG | TOWAKEUP;
+       if ((flags & TOTTY) && tputchar(c, tp) < 0)
+               ap->flags &= ~TOTTY;
        if ((flags & TOLOG))
                msglogchar(c, ap->pri);
        if ((flags & TOCONS) && c)