diff options
author | Antonino A. Daplas <adaplas@gmail.com> | 2007-05-08 03:39:54 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-05-08 14:15:33 -0400 |
commit | 167f07f1bc20ea1ab51d833deb0c18f5ab93618f (patch) | |
tree | ca3ef41b8fc3308ba237a0abcae354dff9987e12 | |
parent | b1e7223f28b4ed5073d2029a3597bf514ff514f2 (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>
-rw-r--r-- | drivers/video/console/fbcon.c | 17 |
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 | } |