]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
caps: handle EINTR in read() 2499/head
authorChristian Brauner <christian.brauner@ubuntu.com>
Sun, 29 Jul 2018 21:57:30 +0000 (23:57 +0200)
committerChristian Brauner <christian.brauner@ubuntu.com>
Sun, 29 Jul 2018 22:16:42 +0000 (00:16 +0200)
We don't want to link caps.{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 <christian.brauner@ubuntu.com>
src/lxc/caps.c

index 4c39ce5c98794c4643cce4657c71a2abcaf85f2b..344a3389b03186a87b47d75f2644d6b7b4895e7b 100644 (file)
@@ -309,7 +309,11 @@ static int _real_caps_last_cap(void)
                char *ptr;
                int n;
 
-               if ((n = read(fd, buf, 31)) >= 0) {
+       again:
+               n = read(fd, buf, 31);
+               if (n < 0 && errno == EINTR) {
+                       goto again;
+               } else if (n >= 0) {
                        buf[n] = '\0';
                        errno = 0;