]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/kern/sys_persona.c
xnu-4570.71.2.tar.gz
[apple/xnu.git] / bsd / kern / sys_persona.c
index 792043d8dc9bfa93c0cdf175b3f433c13a991e52..7f33f6769f6eb0789c4ab4abe2001e971e7cea5d 100644 (file)
@@ -144,7 +144,7 @@ out_error:
 
 static int kpersona_dealloc_syscall(user_addr_t idp)
 {
-       int error;
+       int error = 0;
        uid_t persona_id;
        struct persona *persona;
 
@@ -155,19 +155,17 @@ static int kpersona_dealloc_syscall(user_addr_t idp)
        if (error)
                return error;
 
-       persona = persona_lookup(persona_id);
+       /* invalidate the persona (deny subsequent spawn/fork) */
+       persona = persona_lookup_and_invalidate(persona_id);
+
        if (!persona)
                return ESRCH;
 
-       /* invalidate the persona (deny subsequent spawn/fork) */
-       error = persona_invalidate(persona);
-
        /* one reference from the _lookup() */
        persona_put(persona);
 
        /* one reference from the _alloc() */
-       if (!error)
-               persona_put(persona);
+       persona_put(persona);
 
        return error;
 }