linux-fbdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* 2.6.7 fbcon: set_con2fb on current console = crash
@ 2004-06-18 21:50 Jakub Bogusz
  2004-06-19  6:13 ` Antonino A. Daplas
  0 siblings, 1 reply; 4+ messages in thread
From: Jakub Bogusz @ 2004-06-18 21:50 UTC (permalink / raw)
  To: linux-kernel, linux-fbdev-devel; +Cc: pld-kernel

[-- Attachment #1: Type: text/plain, Size: 980 bytes --]

After upgrade from 2.6.4 to 2.6.7 I noticed that calling set_con2fb
(through FBIOPUT_CON2FBMAP ioctl) on current console (already attached
to fb using this ioctl) causes crash (oops and then recursive oops when
trying to printk on console) and makes console unusable.

That's because take_over_console() calls fbcon_deinit(vc_num)
(which calls fbcon_free_font() on that console display) and then
fbcon_init(vc_num, ...), which copies font data from current fb console.
If current console was just deinit()ed, its fontdata is NULL - and this
pointer is "copied" to the same place, leaving current console with
fontdata==NULL (which leads to oops on nearest putc/putcs).

Attached patch restores 2.6.4 behaviour on set_con2fb (to set font if
it's not set already) - but it's not perfect solution as user font is
still lost (unline on 2.4.x kernels).
Any idea how to preserve user font on set_con2fb() called on current
console?


-- 
Jakub Bogusz    http://cyber.cs.net.pl/~qboosh/

[-- Attachment #2: linux-fbcon-con2fb-crash-workaround.patch --]
[-- Type: text/plain, Size: 707 bytes --]

--- linux-2.6.7/drivers/video/console/fbcon.c.orig	2004-06-16 18:24:04.000000000 +0200
+++ linux-2.6.7/drivers/video/console/fbcon.c	2004-06-18 23:12:35.000000000 +0200
@@ -617,6 +617,15 @@
 	if (p->userfont) {
 		REFCOUNT(p->fontdata)++;
 		charcnt = FNTCHARCNT(p->fontdata);
+	} else if(!p->fontdata) {
+		struct font_desc *font = NULL;
+		if (!fontname[0] || !(font = find_font(fontname)))
+			font = get_default_font(info->var.xres,
+						   info->var.yres);
+		vc->vc_font.width = font->width;
+		vc->vc_font.height = font->height;
+		vc->vc_font.data = p->fontdata = font->data;
+		vc->vc_font.charcount = 256; /* FIXME  Need to support more fonts */
 	}
 	con_copy_unimap(vc->vc_num, display_fg);
 

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2004-06-19 10:03 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-06-18 21:50 2.6.7 fbcon: set_con2fb on current console = crash Jakub Bogusz
2004-06-19  6:13 ` Antonino A. Daplas
2004-06-19  9:28   ` Geert Uytterhoeven
2004-06-19 10:03     ` Antonino A. Daplas

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).