⬢ DragonFlyBSD Kernel Audit
DF-4301 / fix.diff
← back to finding ↓ download raw
--- 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);