[PATCH 2.6] fbcon font cloning fix

From: Petr Baudis
Date: Thu Mar 18 2004 - 17:02:27 EST


Hello,

this patch (against 2.6.4) fixes a bug which I hit when migrating from 2.4.
Basically, when I do setfont during the system boot, the then-spawned ttys do
not retain the new font but fall back to the default one.

I've tracked that down to a clearly bogus test in fbcon_set_display(),
because vc->vc_font.width is not set at that time yet (no font has been loaded
for the new vc). But even if it would (or this was meant to test against
tmp->vc_font.width), it would mean only *HUGE* fonts would be retained. And
even if there were *two* bugs there and it was supposed to be less-than there,
I couldn't make a sense of the test.

Please consider applying.

drivers/video/console/fbcon.c | 22 ++++++++++------------
1 files changed, 10 insertions(+), 12 deletions(-)

Kind regards,
Petr Baudis

diff -rup linux/drivers/video/console/fbcon.c linux+pasky/drivers/video/console/fbcon.c
--- linux/drivers/video/console/fbcon.c Thu Mar 18 22:14:28 2004
+++ linux+pasky/drivers/video/console/fbcon.c Thu Mar 18 21:32:01 2004
@@ -746,19 +746,17 @@ static void fbcon_set_display(struct vc_
struct display *q = &fb_display[i];
struct vc_data *tmp = vc_cons[i].d;

- if (vc->vc_font.width > 32) {
- /* If we are not the first console on this
- fb, copy the font from that console */
- vc->vc_font.width = tmp->vc_font.width;
- vc->vc_font.height = tmp->vc_font.height;
- vc->vc_font.data = p->fontdata = q->fontdata;
- p->userfont = q->userfont;
- if (p->userfont) {
- REFCOUNT(p->fontdata)++;
- charcnt = FNTCHARCNT(p->fontdata);
- }
- con_copy_unimap(vc->vc_num, i);
+ /* If we are not the first console on this
+ fb, copy the font from that console */
+ vc->vc_font.width = tmp->vc_font.width;
+ vc->vc_font.height = tmp->vc_font.height;
+ vc->vc_font.data = p->fontdata = q->fontdata;
+ p->userfont = q->userfont;
+ if (p->userfont) {
+ REFCOUNT(p->fontdata)++;
+ charcnt = FNTCHARCNT(p->fontdata);
}
+ con_copy_unimap(vc->vc_num, i);
}

if (!p->fontdata) {
-
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/