--- a/sys/dev/misc/vkbd/vkbd.c +++ b/sys/dev/misc/vkbd/vkbd.c @@ -842,10 +842,12 @@ static int vkbd_term(keyboard_t *kbd) { vkbd_state_t *state = (vkbd_state_t *) kbd->kb_data; + int error; - kbd_unregister(kbd); + error = kbd_unregister(kbd); + if (error != 0) + return (error); /* still registered/busy: do not free */ VKBD_LOCK_DESTROY(state);