diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2016-02-14 20:05:35 +0100 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2016-02-14 20:06:33 +0100 |
commit | 1b6cf043c4083c6a64706d67232363cf78f92975 (patch) | |
tree | d397aad7224249e0c61b12f2d133f8e269984092 /proc/mgt.c | |
parent | 6edf2d7cdecac6031e4ecfcc2b14ba5bed7c02a1 (diff) |
Make sure to complete auth_server_authenticate
* boot/boot.c (S_io_reauthenticate): Keep calling auth_server_authenticate
while it returns EINTR.
* proc/mgt.c (S_proc_reauthenticate): Likewise.
Diffstat (limited to 'proc/mgt.c')
-rw-r--r-- | proc/mgt.c | 16 |
1 files changed, 9 insertions, 7 deletions
@@ -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) |