]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
caps: handle EINTR in read()
authorChristian Brauner <christian.brauner@ubuntu.com>
Sun, 29 Jul 2018 21:57:30 +0000 (23:57 +0200)
committerChristian Brauner <christian.brauner@ubuntu.com>
Mon, 10 Dec 2018 15:06:52 +0000 (16:06 +0100)
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 a697856ac5bd85df0b29a81d90fd2031bc9cfb13..5638c712e141e4cd769b16130d9f165be73e8a6b 100644 (file)
@@ -315,7 +315,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;