[PATCH] vgacon: Return the upper half of 512 character fonts

From: Stefan Bader
Date: Fri Apr 17 2009 - 17:21:05 EST


Bug: #355057

Uwe Geuder noted that he gets random bitmaps on a text console if he tried
to type extended characters (like the e acute). For him everything above
unicode 0xa0 was corrupted.

After some digging there seems to be a little culprit in vgacon since the
beginning of ages (well git). The function vgacon_font_get will store the
number of characters correctly in font->charcount but then calls to
vgacon_do_font_op(..., 0, 0). Which means only the lower 256 characters are
actually stored to the fontdata. The rest is left untouched. So the next time
that saved data is used, the garbled font appears. This happens on every
switch between text consoles.

Signed-off-by: Stefan Bader <stefan.bader@xxxxxxxxxxxxx>
Tested-by: Uwe Geuder <ubuntuLp-ugeuder@xxxxxxxxxxxxxx>
---
drivers/video/console/vgacon.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/video/console/vgacon.c b/drivers/video/console/vgacon.c
index d012edd..38e86b8 100644
--- a/drivers/video/console/vgacon.c
+++ b/drivers/video/console/vgacon.c
@@ -1282,7 +1282,7 @@ static int vgacon_font_get(struct vc_data *c, struct console_font *font)
font->charcount = vga_512_chars ? 512 : 256;
if (!font->data)
return 0;
- return vgacon_do_font_op(&state, font->data, 0, 0);
+ return vgacon_do_font_op(&state, font->data, 0, vga_512_chars);
}

#else
--
1.5.4.3


--------------040508070000040108020402--
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/