fbdev/sysfs: Fix locking
fb_set_var requires we hold the fb_info lock. Or at least this now matches what the ioctl does ... Note that ps3fb and sh_mobile_lcdcfb are busted in different ways here, but I will not fix them up. Also in practice this isn't a big deal, because really variable fbdev state is actually protected by console_lock (because fbcon just doesn't bother with lock_fb_info() at all), and lock_fb_info protecting anything is really just a neat lie. But that's a much bigger fish to fry. Acked-by: Thomas Zimmermann <tzimmermann@suse.de> Acked-by: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> Cc: Helge Deller <deller@gmx.de> Cc: Daniel Vetter <daniel@ffwll.ch> Cc: Qing Wang <wangqing@vivo.com> Cc: Sam Ravnborg <sam@ravnborg.org> Link: https://patchwork.freedesktop.org/patch/msgid/20220405210335.3434130-6-daniel.vetter@ffwll.ch
This commit is contained in:
parent
9b0a490e71
commit
9ad5cc9bcf
@ -91,9 +91,11 @@ static int activate(struct fb_info *fb_info, struct fb_var_screeninfo *var)
|
||||
|
||||
var->activate |= FB_ACTIVATE_FORCE;
|
||||
console_lock();
|
||||
lock_fb_info(fb_info);
|
||||
err = fb_set_var(fb_info, var);
|
||||
if (!err)
|
||||
fbcon_update_vcs(fb_info, var->activate & FB_ACTIVATE_ALL);
|
||||
unlock_fb_info(fb_info);
|
||||
console_unlock();
|
||||
if (err)
|
||||
return err;
|
||||
|
Loading…
Reference in New Issue
Block a user