Merge tag 'acpi-5.13-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael...
[linux-2.6-microblaze.git] / mm / gup_test.c
index e3cf78e..d974dec 100644 (file)
@@ -52,6 +52,12 @@ static void verify_dma_pinned(unsigned int cmd, struct page **pages,
 
                                dump_page(page, "gup_test failure");
                                break;
+                       } else if (cmd == PIN_LONGTERM_BENCHMARK &&
+                               WARN(!is_pinnable_page(page),
+                                    "pages[%lu] is NOT pinnable but pinned\n",
+                                    i)) {
+                               dump_page(page, "gup_test failure");
+                               break;
                        }
                }
                break;
@@ -94,7 +100,7 @@ static int __gup_test_ioctl(unsigned int cmd,
 {
        ktime_t start_time, end_time;
        unsigned long i, nr_pages, addr, next;
-       int nr;
+       long nr;
        struct page **pages;
        int ret = 0;
        bool needs_mmap_lock =
@@ -126,37 +132,34 @@ static int __gup_test_ioctl(unsigned int cmd,
                        nr = (next - addr) / PAGE_SIZE;
                }
 
-               /* Filter out most gup flags: only allow a tiny subset here: */
-               gup->flags &= FOLL_WRITE;
-
                switch (cmd) {
                case GUP_FAST_BENCHMARK:
-                       nr = get_user_pages_fast(addr, nr, gup->flags,
+                       nr = get_user_pages_fast(addr, nr, gup->gup_flags,
                                                 pages + i);
                        break;
                case GUP_BASIC_TEST:
-                       nr = get_user_pages(addr, nr, gup->flags, pages + i,
+                       nr = get_user_pages(addr, nr, gup->gup_flags, pages + i,
                                            NULL);
                        break;
                case PIN_FAST_BENCHMARK:
-                       nr = pin_user_pages_fast(addr, nr, gup->flags,
+                       nr = pin_user_pages_fast(addr, nr, gup->gup_flags,
                                                 pages + i);
                        break;
                case PIN_BASIC_TEST:
-                       nr = pin_user_pages(addr, nr, gup->flags, pages + i,
+                       nr = pin_user_pages(addr, nr, gup->gup_flags, pages + i,
                                            NULL);
                        break;
                case PIN_LONGTERM_BENCHMARK:
                        nr = pin_user_pages(addr, nr,
-                                           gup->flags | FOLL_LONGTERM,
+                                           gup->gup_flags | FOLL_LONGTERM,
                                            pages + i, NULL);
                        break;
                case DUMP_USER_PAGES_TEST:
-                       if (gup->flags & GUP_TEST_FLAG_DUMP_PAGES_USE_PIN)
-                               nr = pin_user_pages(addr, nr, gup->flags,
+                       if (gup->test_flags & GUP_TEST_FLAG_DUMP_PAGES_USE_PIN)
+                               nr = pin_user_pages(addr, nr, gup->gup_flags,
                                                    pages + i, NULL);
                        else
-                               nr = get_user_pages(addr, nr, gup->flags,
+                               nr = get_user_pages(addr, nr, gup->gup_flags,
                                                    pages + i, NULL);
                        break;
                default:
@@ -187,7 +190,7 @@ static int __gup_test_ioctl(unsigned int cmd,
 
        start_time = ktime_get();
 
-       put_back_pages(cmd, pages, nr_pages, gup->flags);
+       put_back_pages(cmd, pages, nr_pages, gup->test_flags);
 
        end_time = ktime_get();
        gup->put_delta_usec = ktime_us_delta(end_time, start_time);