From: Pavel Machek <pavel@suse.cz>

Here's incremental patch to add the comment and fix fn_dec_console, too.  I
hope it is applicable.



---

 /dev/null               |    0 
 drivers/char/keyboard.c |    8 +++++++-
 2 files changed, 7 insertions(+), 1 deletion(-)

diff -puN drivers/char/keyboard.c~alt-arrow-console-switch-fix-2 drivers/char/keyboard.c
--- 25/drivers/char/keyboard.c~alt-arrow-console-switch-fix-2	2004-01-09 11:23:36.000000000 -0800
+++ 25-akpm/drivers/char/keyboard.c	2004-01-09 11:23:36.000000000 -0800
@@ -494,8 +494,13 @@ static void fn_lastcons(struct vc_data *
 static void fn_dec_console(struct vc_data *vc, struct pt_regs *regs)
 {
 	int i;
+	int cur = fg_console;
+
+	/* Currently switching?  Queue this next switch relative to that. */
+	if (want_console != -1)
+		cur = want_console;
  
-	for (i = fg_console-1; i != fg_console; i--) {
+	for (i = cur-1; i != cur; i--) {
 		if (i == -1)
 			i = MAX_NR_CONSOLES-1;
 		if (vc_cons_allocated(i))
@@ -509,6 +514,7 @@ static void fn_inc_console(struct vc_dat
 	int i;
 	int cur = fg_console;
 
+	/* Currently switching?  Queue this next switch relative to that. */
 	if (want_console != -1)
 		cur = want_console;
 
diff -puN -L linux/drivers/char/keyboard.c /dev/null /dev/null

_