From 7e3cfcbe9ccfef8837c42efcf5332035814415fc Mon Sep 17 00:00:00 2001 From: Mathieu Desnoyers Date: Tue, 6 Mar 2012 18:10:43 -0500 Subject: [PATCH] Fix: recvmsg should handle EINTR Signed-off-by: Mathieu Desnoyers --- liblttng-ust-comm/lttng-ust-comm.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/liblttng-ust-comm/lttng-ust-comm.c b/liblttng-ust-comm/lttng-ust-comm.c index 3277191c..21f48ed0 100644 --- a/liblttng-ust-comm/lttng-ust-comm.c +++ b/liblttng-ust-comm/lttng-ust-comm.c @@ -248,7 +248,9 @@ ssize_t ustcomm_recv_unix_sock(int sock, void *buf, size_t len) msg.msg_iov = iov; msg.msg_iovlen = 1; - ret = recvmsg(sock, &msg, 0); + do { + ret = recvmsg(sock, &msg, 0); + } while (ret < 0 && errno == EINTR); if (ret < 0) { perror("recvmsg"); } @@ -462,7 +464,10 @@ int ustcomm_recv_fd(int sock) msg.msg_control = recv_fd; msg.msg_controllen = sizeof(recv_fd); - if ((ret = recvmsg(sock, &msg, 0)) < 0) { + do { + ret = recvmsg(sock, &msg, 0); + } while (ret < 0 && errno == EINTR); + if (ret < 0) { perror("recvmsg"); goto end; } -- 2.34.1