mirror of
https://github.com/adulau/aha.git
synced 2024-12-28 11:46:19 +00:00
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>
This commit is contained in:
parent
38b4982c63
commit
4941cb7a18
1 changed files with 3 additions and 1 deletions
|
@ -803,6 +803,8 @@ fb_set_var(struct fb_info *info, struct fb_var_screeninfo *var)
|
|||
|
||||
if ((var->activate & FB_ACTIVATE_FORCE) ||
|
||||
memcmp(&info->var, var, sizeof(struct fb_var_screeninfo))) {
|
||||
u32 activate = var->activate;
|
||||
|
||||
if (!info->fbops->fb_check_var) {
|
||||
*var = info->var;
|
||||
return 0;
|
||||
|
@ -831,7 +833,7 @@ fb_set_var(struct fb_info *info, struct fb_var_screeninfo *var)
|
|||
|
||||
if (!err && (flags & FBINFO_MISC_USEREVENT)) {
|
||||
struct fb_event event;
|
||||
int evnt = (var->activate & FB_ACTIVATE_ALL) ?
|
||||
int evnt = (activate & FB_ACTIVATE_ALL) ?
|
||||
FB_EVENT_MODE_CHANGE_ALL :
|
||||
FB_EVENT_MODE_CHANGE;
|
||||
|
||||
|
|
Loading…
Reference in a new issue