aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/mach/hurd/setegid.c
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/mach/hurd/setegid.c')
-rw-r--r--sysdeps/mach/hurd/setegid.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/sysdeps/mach/hurd/setegid.c b/sysdeps/mach/hurd/setegid.c
index f0258d3af0..1396e193f2 100644
--- a/sysdeps/mach/hurd/setegid.c
+++ b/sysdeps/mach/hurd/setegid.c
@@ -29,6 +29,7 @@ setegid (gid_t gid)
auth_t newauth;
error_t err;
+retry:
HURD_CRITICAL_BEGIN;
__mutex_lock (&_hurd_id.lock);
err = _hurd_check_ids ();
@@ -55,6 +56,9 @@ setegid (gid_t gid)
}
__mutex_unlock (&_hurd_id.lock);
HURD_CRITICAL_END;
+ if (err == EINTR)
+ /* Got a signal while inside an RPC of the critical section, retry again */
+ goto retry;
if (err)
return __hurd_fail (err);