svn commit: r194074 - head/sys/kern
Ed Schouten
ed at FreeBSD.org
Fri Jun 12 20:29:57 UTC 2009
Author: ed
Date: Fri Jun 12 20:29:55 2009
New Revision: 194074
URL: http://svn.freebsd.org/changeset/base/194074
Log:
Prevent yet another staircase effect bug in the console device.
Even though I thought I fixed the staircase issue (and I was no longer
able to reproduce it), I got some reports of the issue still being
there. It turns out the staircase effect still occurred when
/dev/console was kept open while killing the getty on the same TTY
(ttyv0).
For some reason I can't figure out how the old TTY code dealt with that,
so I assume the issue has always been there. I only exposed it more by
merging consolectl with ttyv0, which means that the issue was present,
even on systems without a serial console.
I'm now marking the console device as being closed when closing the
regular TTY device node. This means that when the getty shuts down,
init(8) will open /dev/console, which means the termios attributes will
always be reset in this case.
Modified:
head/sys/kern/tty.c
Modified: head/sys/kern/tty.c
==============================================================================
--- head/sys/kern/tty.c Fri Jun 12 20:18:08 2009 (r194073)
+++ head/sys/kern/tty.c Fri Jun 12 20:29:55 2009 (r194074)
@@ -322,14 +322,14 @@ ttydev_close(struct cdev *dev, int fflag
* console.
*/
MPASS((tp->t_flags & TF_OPENED) != TF_OPENED);
- if (dev == dev_console)
+ if (dev == dev_console) {
tp->t_flags &= ~TF_OPENED_CONS;
- else
- tp->t_flags &= ~(TF_OPENED_IN|TF_OPENED_OUT);
-
- if (tp->t_flags & TF_OPENED) {
- tty_unlock(tp);
- return (0);
+ if (tp->t_flags & TF_OPENED) {
+ tty_unlock(tp);
+ return (0);
+ }
+ } else {
+ tp->t_flags &= ~TF_OPENED;
}
/*
More information about the svn-src-head
mailing list