From: Rich Felker Date: Sat, 6 Dec 2014 02:19:39 +0000 (-0500) Subject: use direct syscall rather than write function in posix_spawn child X-Git-Tag: v1.1.6~36 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=8f7bc690f07e90177b176b6e19736ad7c1d49840;p=oweals%2Fmusl.git 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. --- diff --git a/src/process/posix_spawn.c b/src/process/posix_spawn.c index af127317..0bdf71cd 100644 --- a/src/process/posix_spawn.c +++ b/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); }