summaryrefslogtreecommitdiffstats
path: root/sys/dev/syscons
diff options
context:
space:
mode:
authorru <ru@FreeBSD.org>2006-11-06 19:06:07 +0000
committerru <ru@FreeBSD.org>2006-11-06 19:06:07 +0000
commit34b745c784ffea6af05df362c879dc2a4afe4a75 (patch)
tree3b61e7dafd6df844a0016b80ffe5edc00fa3a9b0 /sys/dev/syscons
parent2e2a6d6a66a2df2598888e3b3e57b26464da1934 (diff)
downloadFreeBSD-src-34b745c784ffea6af05df362c879dc2a4afe4a75.zip
FreeBSD-src-34b745c784ffea6af05df362c879dc2a4afe4a75.tar.gz
Sometimes the vty switching has to be delayed; the vty
to be switched to is saved in sc->delayed_next_scr and the actual switch is performed later. It was possible to get into the endless loop when attempting to switch to a closed vty (which is not allowed and beep-alerted when attempted) and when the visual beep was in effect. This caused sc->delayed_next_scr to never be reset and endless attempts to switch to a closed vty and endless visual beeping. How to repeat: - boot into single-user - run "kbdcontrol -b visual" - quickly press Alt+F2 two times PR: kern/68016 X-MFC after: 6.2-RELEASE
Diffstat (limited to 'sys/dev/syscons')
-rw-r--r--sys/dev/syscons/syscons.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/dev/syscons/syscons.c b/sys/dev/syscons/syscons.c
index 87ada19..403f527 100644
--- a/sys/dev/syscons/syscons.c
+++ b/sys/dev/syscons/syscons.c
@@ -2176,6 +2176,7 @@ sc_switch_scr(sc_softc_t *sc, u_int next_scr)
DPRINTF(5, ("switch delayed\n"));
return 0;
}
+ sc->delayed_next_scr = 0;
s = spltty();
cur_scp = sc->cur_scp;
@@ -2320,7 +2321,6 @@ sc_switch_scr(sc_softc_t *sc, u_int next_scr)
/* this is the start of vty switching process... */
++sc->switch_in_progress;
- sc->delayed_next_scr = 0;
sc->old_scp = cur_scp;
sc->new_scp = sc_get_stat(SC_DEV(sc, next_scr));
if (sc->new_scp == sc->old_scp) {
OpenPOWER on IntegriCloud