diff options
Diffstat (limited to 'hurd/hurdexec.c')
-rw-r--r-- | hurd/hurdexec.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/hurd/hurdexec.c b/hurd/hurdexec.c index 732c9ec34b..99f0488e0c 100644 --- a/hurd/hurdexec.c +++ b/hurd/hurdexec.c @@ -123,15 +123,15 @@ _hurd_exec_paths (task_t task, file_t file, ss = _hurd_self_sigstate (); - assert (! __spin_lock_locked (&ss->critical_section_lock)); __spin_lock (&ss->critical_section_lock); - __spin_lock (&ss->lock); + _hurd_sigstate_lock (ss); + struct sigaction *actions = _hurd_sigstate_actions (ss); ints[INIT_SIGMASK] = ss->blocked; - ints[INIT_SIGPENDING] = ss->pending; + ints[INIT_SIGPENDING] = _hurd_sigstate_pending (ss); ints[INIT_SIGIGN] = 0; for (i = 1; i < NSIG; ++i) - if (ss->actions[i].sa_handler == SIG_IGN) + if (actions[i].sa_handler == SIG_IGN) ints[INIT_SIGIGN] |= __sigmask (i); /* We hold the sigstate lock until the exec has failed so that no signal @@ -142,7 +142,7 @@ _hurd_exec_paths (task_t task, file_t file, critical section flag avoids anything we call trying to acquire the sigstate lock. */ - __spin_unlock (&ss->lock); + _hurd_sigstate_unlock (ss); /* Pack up the descriptor table to give the new program. */ __mutex_lock (&_hurd_dtable_lock); @@ -428,6 +428,7 @@ _hurd_exec_paths (task_t task, file_t file, /* Safe to let signals happen now. */ _hurd_critical_section_unlock (ss); + /* FIXME: handle EINTR */ outargs: free (args); |