From 7af1e31761f34e698cdf576e46c042b327f5a612 Mon Sep 17 00:00:00 2001 From: phk Date: Thu, 31 Mar 2005 12:19:44 +0000 Subject: Explicitly hold a reference to the cdev we have just cloned. This closes the race where the cdev was reclaimed before it ever made it back to devfs lookup. --- sys/dev/vkbd/vkbd.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'sys/dev/vkbd/vkbd.c') diff --git a/sys/dev/vkbd/vkbd.c b/sys/dev/vkbd/vkbd.c index 57a40ed..a02dd3a 100644 --- a/sys/dev/vkbd/vkbd.c +++ b/sys/dev/vkbd/vkbd.c @@ -168,8 +168,10 @@ vkbd_dev_clone(void *arg, char *name, int namelen, struct cdev **dev) if (clone_create(&vkbd_dev_clones, &vkbd_dev_cdevsw, &unit, dev, 0)) { *dev = make_dev(&vkbd_dev_cdevsw, unit2minor(unit), UID_ROOT, GID_WHEEL, 0600, DEVICE_NAME "%d", unit); - if (*dev != NULL) + if (*dev != NULL) { + dev_ref(*dev); (*dev)->si_flags |= SI_CHEAPCLONE; + } } } -- cgit v1.1