Browse Source

use direct syscall rather than write function in posix_spawn child

the write function is a cancellation point and accesses thread-local
state belonging to the calling thread in the parent process. since
cancellation is blocked for the duration of posix_spawn, this is
probably safe, but it's fragile and unnecessary. making the syscall
directly is just as easy and clearly safe.
master
Rich Felker 12 years ago
parent
commit
8f7bc690f0
  1. 2
      src/process/posix_spawn.c

2
src/process/posix_spawn.c

@ -136,7 +136,7 @@ static int child(void *args_vp)
fail:
/* Since sizeof errno < PIPE_BUF, the write is atomic. */
ret = -ret;
if (ret) while (write(p, &ret, sizeof ret) < 0);
if (ret) while (__syscall(SYS_write, p, &ret, sizeof ret) < 0);
_exit(127);
}

Loading…
Cancel
Save