userfaultfd: non-cooperative: selftest: add ufd parameter to copy_page
authorMike Rapoport <rppt@linux.vnet.ibm.com>
Wed, 22 Feb 2017 23:44:04 +0000 (15:44 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 23 Feb 2017 00:41:29 +0000 (16:41 -0800)
With future addition of event tests, copy_page will be called with
different userfault file descriptors

Link: http://lkml.kernel.org/r/20161216144821.5183-40-aarcange@redhat.com
Signed-off-by: Mike Rapoport <rppt@linux.vnet.ibm.com>
Signed-off-by: Andrea Arcangeli <aarcange@redhat.com>
Cc: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
Cc: Hillf Danton <hillf.zj@alibaba-inc.com>
Cc: Michael Rapoport <RAPOPORT@il.ibm.com>
Cc: Mike Kravetz <mike.kravetz@oracle.com>
Cc: Pavel Emelyanov <xemul@parallels.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 75540e770b8225867f73fca6bdc838ae37a2bf59..c79c372db2da48c29461d56397b8ee5eb49fe79e 100644 (file)
@@ -317,7 +317,7 @@ static void *locking_thread(void *arg)
        return NULL;
 }
 
-static int copy_page(unsigned long offset)
+static int copy_page(int ufd, unsigned long offset)
 {
        struct uffdio_copy uffdio_copy;
 
@@ -329,7 +329,7 @@ static int copy_page(unsigned long offset)
        uffdio_copy.len = page_size;
        uffdio_copy.mode = 0;
        uffdio_copy.copy = 0;
-       if (ioctl(uffd, UFFDIO_COPY, &uffdio_copy)) {
+       if (ioctl(ufd, UFFDIO_COPY, &uffdio_copy)) {
                /* real retval in ufdio_copy.copy */
                if (uffdio_copy.copy != -EEXIST)
                        fprintf(stderr, "UFFDIO_COPY error %Ld\n",
@@ -386,7 +386,7 @@ static void *uffd_poll_thread(void *arg)
                offset = (char *)(unsigned long)msg.arg.pagefault.address -
                         area_dst;
                offset &= ~(page_size-1);
-               if (copy_page(offset))
+               if (copy_page(uffd, offset))
                        userfaults++;
        }
        return (void *)userfaults;
@@ -424,7 +424,7 @@ static void *uffd_read_thread(void *arg)
                offset = (char *)(unsigned long)msg.arg.pagefault.address -
                         area_dst;
                offset &= ~(page_size-1);
-               if (copy_page(offset))
+               if (copy_page(uffd, offset))
                        (*this_cpu_userfaults)++;
        }
        return (void *)NULL;
@@ -438,7 +438,7 @@ static void *background_thread(void *arg)
        for (page_nr = cpu * nr_pages_per_cpu;
             page_nr < (cpu+1) * nr_pages_per_cpu;
             page_nr++)
-               copy_page(page_nr * page_size);
+               copy_page(uffd, page_nr * page_size);
 
        return NULL;
 }