aboutsummaryrefslogtreecommitdiff
path: root/lib/libutil
diff options
context:
space:
mode:
authorIan Lepore <ian@FreeBSD.org>2018-12-31 01:09:23 +0000
committerIan Lepore <ian@FreeBSD.org>2018-12-31 01:09:23 +0000
commit1cc7e361a6ac829e450995fd7c62c6364c8a303e (patch)
tree5d444e8e914b2299b700587e88c79cd760013fcd /lib/libutil
parent7e02f8b30a7869d247b97f84656d0c9bf1b0e932 (diff)
downloadsrc-1cc7e361a6ac829e450995fd7c62c6364c8a303e.tar.gz
src-1cc7e361a6ac829e450995fd7c62c6364c8a303e.zip
When allocating a new keyboard at vt_upgrade() time, unwind any cngrabs
done on the old keyboard and then do the corresponding number of grabs on the new keyboard. This fixes a race that can leave the system with a non-functioning keyboard. It goes like this... - The bios claims there is an AT keyboard, atkbd attaches. - SI_SUB_INT_CONFIG_HOOKS runs. - USB probes devices. Devices begin attaching, including disks. - GELI prompts for a password for a just-attached disk, which results in a cngrab() while atkbd is the keyboard. - A USB keyboard attaches. - vt_upgrade() runs and switches the keyboard to the new USB keyboard, but because cngrab was never called for it, it's not activated and keystrokes are ignored. - Now there is no functional keyboard and no way to get one; even plugging in a different USB keyboard doesn't help, because the console is still grabbed, still waiting for a GELI pw. Discussed with: ray@
Notes
Notes: svn path=/head/; revision=342639
Diffstat (limited to 'lib/libutil')
0 files changed, 0 insertions, 0 deletions