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 /boot/boot.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 'boot/boot.c')
-rw-r--r-- | boot/boot.c | 8 |
1 files changed, 6 insertions, 2 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); |