DragonFlyBSD Kernel Audit
DF-1631 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/dev/misc/evdev/cdev.c b/sys/dev/misc/evdev/cdev.c
--- a/sys/dev/misc/evdev/cdev.c
+++ b/sys/dev/misc/evdev/cdev.c
@@ -152,6 +152,9 @@
 
 	if (ret != 0) {
 		debugf(client, "cannot register evdev client");
+		evdev_dispose_client(evdev, client);
+		lockuninit(&client->ec_buffer_mtx);
+		kfree(client, M_EVDEV);
 	}
 
 	return (ret);