OSDN Git Service

selftests/uffd: allow EINTR/EAGAIN
authorPeter Xu <peterx@redhat.com>
Fri, 14 Jan 2022 22:08:01 +0000 (14:08 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 15 Jan 2022 14:30:30 +0000 (16:30 +0200)
This allow test to continue with interruptions like gdb.

Link: https://lkml.kernel.org/r/20211115135219.85881-1-peterx@redhat.com
Signed-off-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Axel Rasmussen <axelrasmussen@google.com>
Cc: Andrea Arcangeli <aarcange@redhat.com>
Cc: Nadav Amit <nadav.amit@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
tools/testing/selftests/vm/userfaultfd.c

index 990f7ae..c9eddd2 100644 (file)
@@ -648,7 +648,7 @@ static int uffd_read_msg(int ufd, struct uffd_msg *msg)
 
        if (ret != sizeof(*msg)) {
                if (ret < 0) {
-                       if (errno == EAGAIN)
+                       if (errno == EAGAIN || errno == EINTR)
                                return 1;
                        err("blocking read error");
                } else {
@@ -724,8 +724,11 @@ static void *uffd_poll_thread(void *arg)
 
        for (;;) {
                ret = poll(pollfd, 2, -1);
-               if (ret <= 0)
+               if (ret <= 0) {
+                       if (errno == EINTR || errno == EAGAIN)
+                               continue;
                        err("poll error: %d", ret);
+               }
                if (pollfd[1].revents & POLLIN) {
                        if (read(pollfd[1].fd, &tmp_chr, 1) != 1)
                                err("read pipefd error");