[PATCH] fbcon: donĀ“t call set_par() in fbcon_init() if vc_mode == KD_GRAPHICS
authorKnut Petersen <Knut_Petersen@t-online.de>
Sat, 7 Jan 2006 09:22:04 +0000 (10:22 +0100)
committerLinus Torvalds <torvalds@g5.osdl.org>
Sat, 7 Jan 2006 18:39:34 +0000 (10:39 -0800)
Nothing prevents a user to modprobe a framebuffer driver from e.g.  the
xterm prompt.  As a result, the set_par() function of the driver will be
called from fbcon_init().

This is fatal as a lot of X / framebuffer combinations are unable to
recover from set_par() reprogramming the graphics controller in
KD_GRAPHICS mode.

It is also unnecessary as the set_par() function will be called during a
switch to KD_TEXT anyway.  Because of this no side effects are possible.

Signed-off-by: Knut Petersen <Knut_Petersen@t-online.de>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
drivers/video/console/fbcon.c

index 3660e51b2612996a80963137777db21b4e9f65a0..50e4c4eb491fbb2e457c482bc92ee14ec8a51d56 100644 (file)
@@ -1110,7 +1110,7 @@ static void fbcon_init(struct vc_data *vc, int init)
         *
         * We need to do it in fbcon_init() to prevent screen corruption.
         */
-       if (CON_IS_VISIBLE(vc)) {
+       if (CON_IS_VISIBLE(vc) && vc->vc_mode == KD_TEXT) {
                if (info->fbops->fb_set_par &&
                    !(ops->flags & FBCON_FLAGS_INIT))
                        info->fbops->fb_set_par(info);