return NULL;
 }
 
-static int copy_page(unsigned long offset)
+static int copy_page(int ufd, unsigned long offset)
 {
        struct uffdio_copy uffdio_copy;
 
        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",
                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;
                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;
        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;
 }