diff --git a/ChangeLog b/ChangeLog index 76d508ffae..88c766f86f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2016-09-20 Adhemerval Zanella + * sysdeps/unix/sysv/linux/spawni.c (__spawnix): Correctly block and unblock + all signals when executing the clone vfork child. + (SIGALL_SET): Remove macro. + * nptl/Makefile (tests): Add tst-exec5. * nptl/tst-exec5.c: New file. * sysdeps/unix/sysv/linux/spawni.c (__spawni): Correctly enable and disable diff --git a/sysdeps/unix/sysv/linux/spawni.c b/sysdeps/unix/sysv/linux/spawni.c index 5c5fcad5f4..67e1c42426 100644 --- a/sysdeps/unix/sysv/linux/spawni.c +++ b/sysdeps/unix/sysv/linux/spawni.c @@ -58,10 +58,6 @@ normal program exit with the exit code 127. */ #define SPAWN_ERROR 127 -/* We need to block both SIGCANCEL and SIGSETXID. */ -#define SIGALL_SET \ - ((__sigset_t) { .__val = {[0 ... _SIGSET_NWORDS-1 ] = -1 } }) - #ifdef __ia64__ # define CLONE(__fn, __stack, __stacksize, __flags, __args) \ __clone2 (__fn, __stack, __stacksize, __flags, __args, 0, 0, 0) @@ -353,7 +349,7 @@ __spawnix (pid_t * pid, const char *file, args.envp = envp; args.xflags = xflags; - __sigprocmask (SIG_BLOCK, &SIGALL_SET, &args.oldmask); + __libc_signal_block_all (&args.oldmask); /* The clone flags used will create a new child that will run in the same memory space (CLONE_VM) and the execution of calling thread will be @@ -386,7 +382,7 @@ __spawnix (pid_t * pid, const char *file, if ((ec == 0) && (pid != NULL)) *pid = new_pid; - __sigprocmask (SIG_SETMASK, &args.oldmask, 0); + __libc_signal_restore_set (&args.oldmask); __libc_ptf_call (__pthread_setcancelstate, (state, NULL), 0);