Author: davide
Date: Sat Mar  9 16:58:19 2013
New Revision: 248109
URL: http://svnweb.freebsd.org/changeset/base/248109

Log:
  Call make_dev_credf() rather than using the couple make_dev()/dev_ref().
  This closes a race with clone_cleanup().

Modified:
  head/sys/netsmb/smb_dev.c

Modified: head/sys/netsmb/smb_dev.c
==============================================================================
--- head/sys/netsmb/smb_dev.c   Sat Mar  9 16:11:29 2013        (r248108)
+++ head/sys/netsmb/smb_dev.c   Sat Mar  9 16:58:19 2013        (r248109)
@@ -107,14 +107,9 @@ nsmb_dev_clone(void *arg, struct ucred *
        else if (dev_stdclone(name, NULL, NSMB_NAME, &u) != 1)
                return;
        i = clone_create(&nsmb_clones, &nsmb_cdevsw, &u, dev, 0);
-       if (i) {
-               *dev = make_dev(&nsmb_cdevsw, u, UID_ROOT, GID_WHEEL, 0600,
-                   "%s%d", NSMB_NAME, u);
-               if (*dev != NULL) {
-                       dev_ref(*dev);
-                       (*dev)->si_flags |= SI_CHEAPCLONE;
-               }
-       }
+       if (i)
+               *dev = make_dev_credf(MAKEDEV_REF, &nsmb_cdevsw, u, cred,
+                   UID_ROOT, GID_WHEEL, 0600, "%s%d", NSMB_NAME, u);
 }
 
 static int
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to