aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video/console/fbcon.c
diff options
context:
space:
mode:
authorAntonino A. Daplas <adaplas@gmail.com>2007-05-08 03:39:54 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-05-08 14:15:33 -0400
commit167f07f1bc20ea1ab51d833deb0c18f5ab93618f (patch)
treeca3ef41b8fc3308ba237a0abcae354dff9987e12 /drivers/video/console/fbcon.c
parentb1e7223f28b4ed5073d2029a3597bf514ff514f2 (diff)
fbcon: check console-fb mapping in fbcon_get_requirement
- Check the console-to-fb mapping in fbcon_get_requirement(), otherwise the value returned may not be valid for the driver. - Minor cleanup Signed-off-by: Antonino Daplas <adaplas@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/video/console/fbcon.c')
-rw-r--r--drivers/video/console/fbcon.c17
1 files changed, 8 insertions, 9 deletions
diff --git a/drivers/video/console/fbcon.c b/drivers/video/console/fbcon.c
index 34899bd7c9f3..73813c60d03a 100644
--- a/drivers/video/console/fbcon.c
+++ b/drivers/video/console/fbcon.c
@@ -3048,14 +3048,14 @@ static void fbcon_get_requirement(struct fb_info *info,
3048{ 3048{
3049 struct vc_data *vc; 3049 struct vc_data *vc;
3050 struct display *p; 3050 struct display *p;
3051 int charcnt;
3052 3051
3053 if (caps->flags) { 3052 if (caps->flags) {
3054 int i; 3053 int i, charcnt;
3055 3054
3056 for (i = first_fb_vc; i <= last_fb_vc; i++) { 3055 for (i = first_fb_vc; i <= last_fb_vc; i++) {
3057 vc = vc_cons[i].d; 3056 vc = vc_cons[i].d;
3058 if (vc && vc->vc_mode == KD_TEXT) { 3057 if (vc && vc->vc_mode == KD_TEXT &&
3058 info->node == con2fb_map[i]) {
3059 p = &fb_display[i]; 3059 p = &fb_display[i];
3060 caps->x |= 1 << (vc->vc_font.width - 1); 3060 caps->x |= 1 << (vc->vc_font.width - 1);
3061 caps->y |= 1 << (vc->vc_font.height - 1); 3061 caps->y |= 1 << (vc->vc_font.height - 1);
@@ -3068,14 +3068,13 @@ static void fbcon_get_requirement(struct fb_info *info,
3068 } else { 3068 } else {
3069 vc = vc_cons[fg_console].d; 3069 vc = vc_cons[fg_console].d;
3070 3070
3071 if (vc && vc->vc_mode == KD_TEXT) { 3071 if (vc && vc->vc_mode == KD_TEXT &&
3072 info->node == con2fb_map[fg_console]) {
3072 p = &fb_display[fg_console]; 3073 p = &fb_display[fg_console];
3073 caps->x |= 1 << (vc->vc_font.width - 1); 3074 caps->x = 1 << (vc->vc_font.width - 1);
3074 caps->y |= 1 << (vc->vc_font.height - 1); 3075 caps->y = 1 << (vc->vc_font.height - 1);
3075 charcnt = (p->userfont) ? 3076 caps->len = (p->userfont) ?
3076 FNTCHARCNT(p->fontdata) : 256; 3077 FNTCHARCNT(p->fontdata) : 256;
3077 if (caps->len < charcnt)
3078 caps->len = charcnt;
3079 } 3078 }
3080 } 3079 }
3081} 3080}