diff options
Diffstat (limited to 'hurd/hurdexec.c')
-rw-r--r-- | hurd/hurdexec.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/hurd/hurdexec.c b/hurd/hurdexec.c index 4e36d92f2e..21579626c1 100644 --- a/hurd/hurdexec.c +++ b/hurd/hurdexec.c @@ -126,12 +126,13 @@ _hurd_exec_paths (task_t task, file_t file, 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 +143,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); |