X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fcommon%2Frunas.c;h=43b154f10869de2e85a57bb7bcc03c7bb646bb72;hp=2c2015aa2d5b8206bca9052320553f8da78d431d;hb=8809eec0bb55b03862cb1eb128eb39d50104c258;hpb=9ef70f8738b524b8ea4f266c526de9d5a4fdc29c diff --git a/src/common/runas.c b/src/common/runas.c index 2c2015aa2..43b154f10 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 @@ -191,8 +192,10 @@ int child_run_as(void *_data) writeleft = sizeof(sendret); index = 0; do { - writelen = write(data->retval_pipe, &sendret.c[index], - writeleft); + do { + writelen = write(data->retval_pipe, &sendret.c[index], + writeleft); + } while (writelen < 0 && errno == EINTR); if (writelen < 0) { PERROR("write"); return EXIT_FAILURE;