• Daniel Vetter's avatar
    fbcon: Fix error paths in set_con2fb_map · edf79dd2
    Daniel Vetter authored
    This is a regressoin introduced in b07db395 ("fbcon: Ditch error
    handling for con2fb_release_oldinfo"). I failed to realize what the if
    (!err) checks. The mentioned commit was dropping the
    con2fb_release_oldinfo() return value but the if (!err) was also
    checking whether the con2fb_acquire_newinfo() function call above
    failed or not.
    
    Fix this with an early return statement.
    
    Note that there's still a difference compared to the orginal state of
    the code, the below lines are now also skipped on error:
    
    	if (!search_fb_in_map(info_idx))
    		info_idx = newidx;
    
    These are only needed when we've actually thrown out an old fb_info
    from the console mappings, which only happens later on.
    
    Also move the fbcon_add_cursor_work() call into the same if block,
    it's all protected by console_lock so doesn't matter when we set up
    the blinking cursor delayed work anyway. This further simplifies the
    control flow and allows us to ditch the found local variable.
    
    v2: Clarify commit message (Javier)
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@intel.com>
    Reviewed-by: default avatarJavier Martinez Canillas <javierm@redhat.com>
    Acked-by: default avatarHelge Deller <deller@gmx.de>
    Tested-by: default avatarXingyuan Mo <hdthky0@gmail.com>
    Fixes: b07db395 ("fbcon: Ditch error handling for con2fb_release_oldinfo")
    Cc: Thomas Zimmermann <tzimmermann@suse.de>
    Cc: Sam Ravnborg <sam@ravnborg.org>
    Cc: Xingyuan Mo <hdthky0@gmail.com>
    Cc: Thomas Zimmermann <tzimmermann@suse.de>
    Cc: Helge Deller <deller@gmx.de>
    Cc: <stable@vger.kernel.org> # v5.19+
    edf79dd2
fbcon.c 83.1 KB