X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fcommon%2Frunas.c;h=3a89cc9ab8d1f73795ca2d9f963fd34423911cbb;hb=47e81c0236926bdee0423bf3f1e6ad3f1facc364;hp=7de566ddb9fce211bb0db34d3c95c24a7cf6b3af;hpb=1e4035fc898a56dc606ba8f5ce856763860d0309;p=lttng-tools.git diff --git a/src/common/runas.c b/src/common/runas.c index 7de566ddb..3a89cc9ab 100644 --- a/src/common/runas.c +++ b/src/common/runas.c @@ -153,13 +153,14 @@ int _open(void *_data) static int child_run_as(void *_data) { + int ret; struct run_as_data *data = _data; - size_t writelen, writeleft, index; + ssize_t writelen; + size_t writeleft, index; union { int i; char c[sizeof(int)]; } sendret; - int ret; /* * Child: it is safe to drop egid and euid while sharing the @@ -317,8 +318,13 @@ static int run_as(int (*cmd)(void *data), void *data, uid_t uid, gid_t gid) { if (!getenv("LTTNG_DEBUG_NOCLONE")) { + int ret; + DBG("Using run_as_clone"); - return run_as_clone(cmd, data, uid, gid); + pthread_mutex_lock(<tng_libc_state_lock); + ret = run_as_clone(cmd, data, uid, gid); + pthread_mutex_unlock(<tng_libc_state_lock); + return ret; } else { DBG("Using run_as_noclone"); return run_as_noclone(cmd, data, uid, gid);