path: root/cddl/contrib
diff options
authorAndriy Gapon <avg@FreeBSD.org>2019-09-19 09:22:45 +0000
committerAndriy Gapon <avg@FreeBSD.org>2019-09-19 09:22:45 +0000
commit9a2ed10014863e84ee404f8b62dcbdbd7f01fb45 (patch)
treee0a52c9cb8db4febee825f3b85826037b9091fd4 /cddl/contrib
parent4a9c211af5425f6a484aff67e446941b7f191199 (diff)
vt: fix problems with trying to switch to a closed VT
If there is an attempt to switch from a process-owned VT to a closed VT, then vt(4) first requests the process to release its VT and only then realizes that the target VT is closed and, so, the switch is not possible. So, the driver does not actually do any switch, but at the same time the owning process is not notified about that and it does not re-acquire the VT. This change adds an early check for the target VT state, so that the switch can be refused before the process coordination dance. On top of that, the code now checks for a failure of vt_window_switch() and calls vt_window_postswitch() for the current VT if it is in the process mode. Test Plan: - configure VT1 - VT8 (ttyv0 - ttyv7) to be text consoles (run getty) - configure VT9 (ttyv8) to rn X server - make sure that the X server configuration allows VT switching - leave VT10 - VT12 unconfigured - while in the X server press Ctrl+Alt+F10 - without the patch, observe strange screen content and problems with keyboard input - with the patch, observe that nothing happens The problem has been observed and the fix has been tested with an nVidia graphics card and the proprietary nvidia driver. Not sure if that matters. Reviewed by: ray MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D21704
Notes: svn path=/head/; revision=352505
Diffstat (limited to 'cddl/contrib')
0 files changed, 0 insertions, 0 deletions