From e0c198063d88dcf155f0d59ffc4260104fe73c7e Mon Sep 17 00:00:00 2001 From: Christian Brauner Date: Sun, 29 Jul 2018 23:54:32 +0200 Subject: [PATCH] log: handle EINTR in read() We don't want to link log.{c,h} against utils.{c,h} for the sake of our static builds init.lxc.static. This means lxc_write_nointr() will not be available. So handle it EINTR. Signed-off-by: Christian Brauner --- src/lxc/log.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/lxc/log.c b/src/lxc/log.c index dafda1b95..388f91ba0 100644 --- a/src/lxc/log.c +++ b/src/lxc/log.c @@ -290,7 +290,8 @@ static int log_append_logfile(const struct lxc_log_appender *appender, { char buffer[LXC_LOG_BUFFER_SIZE]; char date_time[LXC_LOG_TIME_SIZE]; - int n, ret; + int n; + ssize_t ret; int fd_to_use = -1; const char *log_container_name = log_vmname; @@ -340,7 +341,12 @@ static int log_append_logfile(const struct lxc_log_appender *appender, buffer[n] = '\n'; - return write(fd_to_use, buffer, n + 1); +again: + ret = write(fd_to_use, buffer, n + 1); + if (ret < 0 && errno == EINTR) + goto again; + + return ret; } static struct lxc_log_appender log_appender_syslog = { -- 2.39.5