diff options
author | Antonino A. Daplas <adaplas@gmail.com> | 2007-05-08 03:39:22 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-05-08 14:15:31 -0400 |
commit | 4941cb7a18fd84d4d8cd097d2beada3c79c8f781 (patch) | |
tree | 0f7419539b1d056da12b1124e0a33992a3a00432 /drivers/video/fbmem.c | |
parent | 38b4982c6388ae9596f959e3d7fef91affbd181d (diff) |
fbdev: save the activate field before calling fb_check_var()
Some drivers may reset the var->activate field on fb_check_var(). This can
lead to undefined behavior. For example, doing fbset -a <option> with vga16fb
will only modify the active console instead of modifying all.
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/fbmem.c')
-rw-r--r-- | drivers/video/fbmem.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c index c4ce3e44327e..cd1407921af5 100644 --- a/drivers/video/fbmem.c +++ b/drivers/video/fbmem.c | |||
@@ -803,6 +803,8 @@ fb_set_var(struct fb_info *info, struct fb_var_screeninfo *var) | |||
803 | 803 | ||
804 | if ((var->activate & FB_ACTIVATE_FORCE) || | 804 | if ((var->activate & FB_ACTIVATE_FORCE) || |
805 | memcmp(&info->var, var, sizeof(struct fb_var_screeninfo))) { | 805 | memcmp(&info->var, var, sizeof(struct fb_var_screeninfo))) { |
806 | u32 activate = var->activate; | ||
807 | |||
806 | if (!info->fbops->fb_check_var) { | 808 | if (!info->fbops->fb_check_var) { |
807 | *var = info->var; | 809 | *var = info->var; |
808 | return 0; | 810 | return 0; |
@@ -831,7 +833,7 @@ fb_set_var(struct fb_info *info, struct fb_var_screeninfo *var) | |||
831 | 833 | ||
832 | if (!err && (flags & FBINFO_MISC_USEREVENT)) { | 834 | if (!err && (flags & FBINFO_MISC_USEREVENT)) { |
833 | struct fb_event event; | 835 | struct fb_event event; |
834 | int evnt = (var->activate & FB_ACTIVATE_ALL) ? | 836 | int evnt = (activate & FB_ACTIVATE_ALL) ? |
835 | FB_EVENT_MODE_CHANGE_ALL : | 837 | FB_EVENT_MODE_CHANGE_ALL : |
836 | FB_EVENT_MODE_CHANGE; | 838 | FB_EVENT_MODE_CHANGE; |
837 | 839 | ||