Framebuffer console fix

James Simmons (jsimmons@infradead.org)
Tue, 13 May 2003 22:48:18 +0100 (BST)


This patch fixes a oops that happens when we map a framebuffer device to
a non-existant console. Please apply.

# This is a BitKeeper generated patch for the following project:
# Project Name: Linux kernel tree
# This patch format is intended for GNU patch command version 2.5 or higher.
# This patch includes the following deltas:
# ChangeSet 1.1081 -> 1.1082
# drivers/video/console/fbcon.c 1.101 -> 1.102
# drivers/video/console/fbcon.h 1.30 -> 1.31
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 03/05/12 jsimmons@maxwell.earthlink.net 1.1082
# [FBCON] set_con2fb_map wasn't testing to see the VC we where mapping to actually exist. Now it does.
#
# I add code to fbcon_cursor to reset the hotspot if it was changed by userland.
# --------------------------------------------
#
diff -Nru a/drivers/video/console/fbcon.c b/drivers/video/console/fbcon.c
--- a/drivers/video/console/fbcon.c Mon May 12 16:38:57 2003
+++ b/drivers/video/console/fbcon.c Mon May 12 16:38:57 2003
@@ -294,13 +294,16 @@
* Maps a virtual console @unit to a frame buffer device
* @newidx.
*/
-void set_con2fb_map(int unit, int newidx)
+int set_con2fb_map(int unit, int newidx)
{
struct vc_data *vc = vc_cons[unit].d;

+ if (!vc)
+ return -ENODEV;
con2fb_map[unit] = newidx;
fbcon_is_default = (vc->vc_sw == &fb_con) ? 1 : 0;
take_over_console(&fb_con, unit, unit, fbcon_is_default);
+ return 0;
}

/*
@@ -990,6 +993,11 @@
cursor.image.height = vc->vc_font.height;
cursor.image.width = vc->vc_font.width;
cursor.set |= FB_CUR_SETSIZE;
+ }
+
+ if (info->cursor.hot.x || info->cursor.hot.y) {
+ cursor.hot.x = cursor.hot.y = 0;
+ cursor.set |= FB_CUR_SETHOT;
}

if ((cursor.set & FB_CUR_SETSIZE) || ((vc->vc_cursor_type & 0x0f) != p->cursor_shape)) {
diff -Nru a/drivers/video/console/fbcon.h b/drivers/video/console/fbcon.h
--- a/drivers/video/console/fbcon.h Mon May 12 16:38:57 2003
+++ b/drivers/video/console/fbcon.h Mon May 12 16:38:57 2003
@@ -38,7 +38,7 @@

/* drivers/video/console/fbcon.c */
extern char con2fb_map[MAX_NR_CONSOLES];
-extern void set_con2fb_map(int unit, int newidx);
+extern int set_con2fb_map(int unit, int newidx);

/*
* Attribute Decoding

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