diff options
Diffstat (limited to 'sysdeps/mach/hurd/setsid.c')
-rw-r--r-- | sysdeps/mach/hurd/setsid.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/sysdeps/mach/hurd/setsid.c b/sysdeps/mach/hurd/setsid.c index 3861f8f850..698fc9cdcf 100644 --- a/sysdeps/mach/hurd/setsid.c +++ b/sysdeps/mach/hurd/setsid.c @@ -32,6 +32,7 @@ __setsid (void) error_t err; unsigned int stamp; +retry: HURD_CRITICAL_BEGIN; __mutex_lock (&_hurd_dtable_lock); @@ -60,6 +61,9 @@ __setsid (void) } HURD_CRITICAL_END; + if (err == EINTR) + /* Got a signal while inside an RPC of the critical section, retry again */ + goto retry; return err ? __hurd_fail (err) : _hurd_pgrp; } |