• Antonino A. Daplas's avatar
    vgacon: disallow console operations when in KD_GRAPHICS mode · 2ae85477
    Antonino A. Daplas authored
    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: default avatarAntonino Daplas <adaplas@gmail.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    2ae85477
vgacon.c 39.6 KB