• Antonino A. Daplas's avatar
    vt/vgacon: Check if screen resize request comes from userspace · e400b6ec
    Antonino A. Daplas authored
    Various console drivers are able to resize the screen via the con_resize()
    hook.  This hook is also visible in userspace via the TIOCWINSZ, VT_RESIZE and
    VT_RESIZEX ioctl's.  One particular utility, SVGATextMode, expects that
    con_resize() of the VGA console will always return success even if the
    resulting screen is not compatible with the hardware.  However, this
    particular behavior of the VGA console, as reported in Kernel Bugzilla Bug
    7513, can cause undefined behavior if the user starts with a console size
    larger than 80x25.
    
    To work around this problem, add an extra parameter to con_resize().  This
    parameter is ignored by drivers except for vgacon.  If this parameter is
    non-zero, then the resize request came from a VT_RESIZE or VT_RESIZEX ioctl
    and vgacon will always return success.  If this parameter is zero, vgacon will
    return -EINVAL if the requested size is not compatible with the hardware.  The
    latter is the more correct behavior.
    
    With this change, SVGATextMode should still work correctly while in-kernel and
    stty resize calls can expect correct behavior from vgacon.
    Signed-off-by: default avatarAntonino Daplas <adaplas@gmail.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    e400b6ec
vgacon.c 39.8 KB