DF-1714 / fix.diff
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 @@ -130,9 +130,12 @@ /* Avoid race with evdev_unregister */ EVDEV_LOCK(evdev); - if (dev->si_drv1 == NULL) + if (dev->si_drv1 == NULL) { ret = ENODEV; - else + lockuninit(&client->ec_buffer_mtx); + kfree(client, M_EVDEV); + return (ret); + } else ret = evdev_register_client(evdev, client); if (ret != 0) |