vgacon: disallow console operations when in KD_GRAPHICS mode
authorAntonino A. Daplas <adaplas@gmail.com>
Tue, 8 May 2007 07:40:06 +0000 (00:40 -0700)
committerLinus Torvalds <torvalds@woody.linux-foundation.org>
Tue, 8 May 2007 18:15:33 +0000 (11:15 -0700)
commit2ae854777592856ad8ce4d4cdb6114804e2e28f6
tree49192562a7cbe6216442c6b3f3bee644f9a7091f
parent32dd38030b3b4ca0aa18a5402059de27bf69ed6b
vgacon: disallow console operations when in KD_GRAPHICS mode

Reported by James Pearson as:

 boot to run level 3

 if not root, then make sure /dev/console is writeable

 login and type:

 setterm -blank 0

 start X

 type into an xterm:

 while true; do echo "" > /dev/console; usleep 100000; done

 while the above loop is running switch to the text console and back
 again (Ctrl-Alt-F1 then Ctrl-Alt-F7)

 ... and the screen will be shifting (and wrapping) to the left.

This problem stems from continuously writing text to the system console (which
is in KD_TEXT mode) while the foreground console is in KD_GRAPHICS
mode. Somewhere along the way, console printing got confused and omitted the
KD_GRAPHICS/KD_TEXT test.  Thus, vgacon attempted to scroll the screen of X,
which causes X to shift.

Fix by disallowing vgacon to touch the hardware when the vc is in KD_GRAPHICS
mode. A definitive fix entails a full audit of the console code.

Signed-off-by: Antonino Daplas <adaplas@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
drivers/video/console/vgacon.c