• Francisco Jerez's avatar
    vt: Fix console corruption on driver hand-over. · 9fc2b2d0
    Francisco Jerez authored
    After 02f0777a "vc_origin" is no
    longer reset to the screen buffer before calling the con_init() hook
    of the new console driver.
    
    If the old driver wasn't using a fixed scanout buffer (e.g. the case
    of vgacon) "vc_origin" may be a pointer to a VRAM location, and its
    contents aren't guaranteed to be preserved after calling con_deinit()
    on the old driver and con_init() on the new driver, i.e. the
    subsequent console resize may fill the framebuffer with garbage.
    
    It can be reproduced in the transition from vgacon to the nouveau
    framebuffer driver: in that case the legacy VGA aperture "vc_origin"
    points to becomes unreadable after fbcon_init().
    
    This patch reverts the mentioned commit. To avoid the problem it
    intended to fix, stop using "vc_scr_end" in vc_do_resize() to
    calculate how many rows we have to copy (actually the code looks
    simpler this way without the help of "vc_scr_end").
    Signed-off-by: default avatarFrancisco Jerez <currojerez@riseup.net>
    Cc: qiaochong <qiaochong@loongson.cn>
    Cc: Greg Kroah-Hartman <gregkh@suse.de>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Alan Cox <alan@linux.intel.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    9fc2b2d0
vt.c 101 KB