MPSAFE: MPSAFE kern/kern_uuid,c
authorVenkatesh Srinivas <me@endeavour.zapto.org>
Wed, 25 Aug 2010 14:53:31 +0000 (07:53 -0700)
committerVenkatesh Srinivas <me@endeavour.zapto.org>
Wed, 25 Aug 2010 14:53:31 +0000 (07:53 -0700)
kern_uuid already protected itself with a lockmgr lock; holding the mplock was
not required.

sys/kern/kern_uuid.c

index a4fa8e8..1cc1b01 100644 (file)
@@ -41,8 +41,6 @@
 #include <sys/gpt.h>
 #include <net/if_var.h>
 
-#include <sys/mplock2.h>
-
 /*
  * See also:
  *     http://www.opengroup.org/dce/info/draft-leach-uuids-guids-01.txt
@@ -156,8 +154,6 @@ kern_uuidgen(struct uuid *store, size_t count)
  * uuidgen(struct uuid *store, int count)
  *
  * Generate an array of new UUIDs
- *
- * MPALMOSTSAFE
  */
 int
 sys_uuidgen(struct uuidgen_args *uap)
@@ -176,10 +172,10 @@ sys_uuidgen(struct uuidgen_args *uap)
                return (EINVAL);
 
        count = uap->count;
-       store = kmalloc(count * sizeof(struct uuid), M_TEMP, M_WAITOK);
-       get_mplock();
+       store = kmalloc(count * sizeof(struct uuid), M_TEMP, M_WAITOK|M_NULLOK);
+       if (store == NULL)
+               return (ENOSPC);
        kern_uuidgen(store, count);
-       rel_mplock();
        error = copyout(store, uap->store, count * sizeof(struct uuid));
        kfree(store, M_TEMP);
        return (error);