selftests/vm: update hugetlb madvise
authorMike Kravetz <mike.kravetz@oracle.com>
Fri, 4 Nov 2022 01:16:32 +0000 (18:16 -0700)
committerAndrew Morton <akpm@linux-foundation.org>
Wed, 30 Nov 2022 23:58:46 +0000 (15:58 -0800)
Commit 8ebe0a5eaaeb ("mm,madvise,hugetlb: fix unexpected data loss with
MADV_DONTNEED on hugetlbfs") changed how the passed length was interpreted
for hugetlb mappings.  It was changed from align up to align down.  The
hugetlb-madvise test explicitly tests this behavior.  Change test to
expect new behavior.

Link: https://lkml.kernel.org/r/20221104011632.357049-1-mike.kravetz@oracle.com
Link: https://lore.kernel.org/oe-lkp/202211040619.2ec447d7-oliver.sang@intel.com
Signed-off-by: Mike Kravetz <mike.kravetz@oracle.com>
Reported-by: kernel test robot <oliver.sang@intel.com>
Cc: David Hildenbrand <david@redhat.com>
Cc: Rik van Riel <riel@surriel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
tools/testing/selftests/vm/hugetlb-madvise.c

index f96435b..a634f47 100644 (file)
@@ -195,7 +195,7 @@ int main(int argc, char **argv)
                        exit(1);
        }
 
-       /* addr + length should be aligned up to huge page size */
+       /* addr + length should be aligned down to huge page size */
        if (madvise(addr,
                        ((NR_HUGE_PAGES - 1) * huge_page_size) + base_page_size,
                        MADV_DONTNEED)) {
@@ -203,10 +203,11 @@ int main(int argc, char **argv)
                exit(1);
        }
 
-       /* should free all pages in mapping */
-       validate_free_pages(free_hugepages);
+       /* should free all but last page in mapping */
+       validate_free_pages(free_hugepages - 1);
 
        (void)munmap(addr, NR_HUGE_PAGES * huge_page_size);
+       validate_free_pages(free_hugepages);
 
        /*
         * Test MADV_DONTNEED on anonymous private mapping