diff options
-rw-r--r-- | boot/boot.c | 8 | ||||
-rw-r--r-- | proc/mgt.c | 16 |
2 files changed, 15 insertions, 9 deletions
diff --git a/boot/boot.c b/boot/boot.c index 4dda26b7..462243c3 100644 --- a/boot/boot.c +++ b/boot/boot.c @@ -1601,13 +1601,17 @@ S_io_reauthenticate (mach_port_t object, MACH_MSG_TYPE_MAKE_SEND); assert_perror (err); - if (! auth_server_authenticate (authserver, + do + err = auth_server_authenticate (authserver, rend, MACH_MSG_TYPE_COPY_SEND, object, MACH_MSG_TYPE_COPY_SEND, &gu, &gulen, &au, &aulen, &gg, &gglen, - &ag, &aglen)) + &ag, &aglen); + while (err == EINTR); + + if (!err) { mig_deallocate ((vm_address_t) gu, gulen * sizeof *gu); mig_deallocate ((vm_address_t) au, aulen * sizeof *gu); @@ -110,13 +110,15 @@ S_proc_reauthenticate (struct proc *p, mach_port_t rendport) /* Release the global lock while blocking on the auth server and client. */ pthread_mutex_unlock (&global_lock); - err = auth_server_authenticate (authserver, - rendport, MACH_MSG_TYPE_COPY_SEND, - MACH_PORT_NULL, MACH_MSG_TYPE_COPY_SEND, - &gen_uids, &ngen_uids, - &aux_uids, &naux_uids, - &gen_gids, &ngen_gids, - &aux_gids, &naux_gids); + do + err = auth_server_authenticate (authserver, + rendport, MACH_MSG_TYPE_COPY_SEND, + MACH_PORT_NULL, MACH_MSG_TYPE_COPY_SEND, + &gen_uids, &ngen_uids, + &aux_uids, &naux_uids, + &gen_gids, &ngen_gids, + &aux_gids, &naux_gids); + while (err == EINTR); pthread_mutex_lock (&global_lock); if (err) |