svn commit: r303338 - head/sys/dev/vt
Ed Maste
emaste at FreeBSD.org
Tue Jul 26 15:34:28 UTC 2016
Author: emaste
Date: Tue Jul 26 15:34:26 2016
New Revision: 303338
URL: https://svnweb.freebsd.org/changeset/base/303338
Log:
vt: lock Giant around kbd calls in CONS_GETINFO
Note that keyboards are stored in an array and are not freed (just
"unregistered" by clearing some fields) so a race would be limited to
obtaining stale information about an unregistered keyboard.
Reported by: CTurt
MFC after: 3 days
Modified:
head/sys/dev/vt/vt_core.c
Modified: head/sys/dev/vt/vt_core.c
==============================================================================
--- head/sys/dev/vt/vt_core.c Tue Jul 26 15:22:21 2016 (r303337)
+++ head/sys/dev/vt/vt_core.c Tue Jul 26 15:34:26 2016 (r303338)
@@ -2228,9 +2228,11 @@ skip_thunk:
return (EINVAL);
if (vw == vd->vd_curwindow) {
+ mtx_lock(&Giant);
kbd = kbd_get_keyboard(vd->vd_keyboard);
if (kbd != NULL)
vt_save_kbd_state(vw, kbd);
+ mtx_unlock(&Giant);
}
vi->m_num = vd->vd_curwindow->vw_number + 1;
More information about the svn-src-head
mailing list