More locking for syscons(4). This should prevent races with sckbdevent().
PR: kern/127446 Submitted by: Eygene Ryabinkin rea-fbsd at codelabs dot ru
This commit is contained in:
parent
6129343d5d
commit
ae670dad61
@ -1572,6 +1572,7 @@ sccngetch(int flags)
|
||||
int s = spltty(); /* block sckbdevent and scrn_timer while we poll */
|
||||
int c;
|
||||
|
||||
mtx_lock(&Giant);
|
||||
/* assert(sc_console != NULL) */
|
||||
|
||||
/*
|
||||
@ -1583,11 +1584,13 @@ sccngetch(int flags)
|
||||
sccnupdate(scp);
|
||||
|
||||
if (fkeycp < fkey.len) {
|
||||
mtx_unlock(&Giant);
|
||||
splx(s);
|
||||
return fkey.str[fkeycp++];
|
||||
}
|
||||
|
||||
if (scp->sc->kbd == NULL) {
|
||||
mtx_unlock(&Giant);
|
||||
splx(s);
|
||||
return -1;
|
||||
}
|
||||
@ -1610,6 +1613,7 @@ sccngetch(int flags)
|
||||
scp->kbd_mode = cur_mode;
|
||||
kbdd_ioctl(scp->sc->kbd, KDSKBMODE, (caddr_t)&scp->kbd_mode);
|
||||
kbdd_disable(scp->sc->kbd);
|
||||
mtx_unlock(&Giant);
|
||||
splx(s);
|
||||
|
||||
switch (KEYFLAGS(c)) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user