linux-loongson/tools/testing/selftests/mm
Lorenzo Stoakes 742d3663a5 selftests/mm: add test for invalid multi VMA operations
We can use UFFD to easily assert invalid multi VMA moves, so do so,
asserting expected behaviour when VMAs invalid for a multi VMA operation
are encountered.

We assert both that such operations are not permitted, and that we do not
even attempt to move the first VMA under these circumstances.

We also assert that we can still move a single VMA regardless.

We then assert that a partial failure can occur if the invalid VMA appears
later in the range of multiple VMAs, both at the very next VMA, and also at
the end of the range.

As part of this change, we are using the is_range_valid() helper more
aggressively. Therefore, fix a bug where stale buffered data would hang
around on success, causing subsequent calls to is_range_valid() to
potentially give invalid results.

We simply have to fflush() the stream on success to resolve this issue.

Link: https://lkml.kernel.org/r/c4fb86dd5ba37610583ad5fc0e0c2306ddf318b9.1754218667.git.lorenzo.stoakes@oracle.com
Signed-off-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
Cc: David Hildenbrand <david@redhat.com>
Cc: Jann Horn <jannh@google.com>
Cc: Liam Howlett <liam.howlett@oracle.com>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Mike Rapoport <rppt@kernel.org>
Cc: Suren Baghdasaryan <surenb@google.com>
Cc: Vlastimil Babka <vbabka@suse.cz>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
2025-08-19 16:35:55 -07:00
..
page_frag mm: page_frag: fix a compile error when kernel is not compiled 2024-11-19 12:20:40 +01:00
.gitignore selftests/mm: add process_madvise() tests 2025-08-02 12:06:08 -07:00
charge_reserved_hugetlb.sh selftests/mm: generate a temporary mountpoint for cgroup filesystem 2025-04-11 17:32:37 -07:00
check_config.sh selftests/mm: give scripts execute permission 2023-07-14 09:24:31 -07:00
compaction_test.c selftests/mm: compaction_test: support platform with huge mount of memory 2025-05-07 23:39:39 -07:00
config selftests/mm: add configs to fix testcase failure 2025-06-19 20:48:02 -07:00
cow.c selftests/mm: reuse FORCE_READ to replace "asm volatile("" : "+r" (XXX));" 2025-07-24 19:12:41 -07:00
droppable.c mm: add MAP_DROPPABLE for designating always lazily freeable mappings 2024-07-19 20:22:12 +02:00
guard-regions.c selftests/mm: guard-regions: Use SKIP() instead of ksft_exit_skip() 2025-07-24 19:12:42 -07:00
gup_longterm.c selftest/mm: skip if fallocate() is unsupported in gup_longterm 2025-07-09 22:42:11 -07:00
gup_test.c selftests/mm: fix build warnings on ppc64 2024-05-24 11:55:06 -07:00
hmm-tests.c selftests/mm: fix incorrect buffer->mirror size in hmm2 double_map test 2024-10-09 12:47:19 -07:00
hugepage-mmap.c selftests/mm: remove unnecessary ia64 code and comment 2024-09-03 21:15:38 -07:00
hugepage-mremap.c Revert "selftests/mm: remove local __NR_* definitions" 2025-03-05 21:36:12 -08:00
hugepage-shm.c selftests/mm: remove unnecessary ia64 code and comment 2024-09-03 21:15:38 -07:00
hugepage-vmemmap.c selftests/mm: remove unnecessary ia64 code and comment 2024-09-03 21:15:38 -07:00
hugetlb_dio.c selftest: hugetlb_dio: fix test naming 2024-12-05 19:54:44 -08:00
hugetlb_fault_after_madv.c selftests/mm: hugetlb_fault_after_madv: improve test output 2024-11-05 16:56:25 -08:00
hugetlb_madv_vs_map.c selftests/mm: hugetlb_madv_vs_map: avoid test skipping by querying hugepage size at runtime 2024-05-11 15:41:37 -07:00
hugetlb_reparenting_test.sh selftests/mm: restore default nr_hugepages value during cleanup in hugetlb_reparenting_test.sh 2025-05-11 17:48:29 -07:00
hugetlb-madvise.c selftests/mm: reuse FORCE_READ to replace "asm volatile("" : "+r" (XXX));" 2025-07-24 19:12:41 -07:00
hugetlb-read-hwpoison.c selftests/mm: add tests for HWPOISON hugetlbfs read 2023-08-18 10:12:27 -07:00
hugetlb-soft-offline.c selftest/mm: test enable_soft_offline behaviors 2024-07-04 18:06:00 -07:00
khugepaged.c ksm_tests: skip hugepage test when Transparent Hugepages are disabled 2025-07-09 22:42:23 -07:00
ksm_functional_tests.c selftests/mm: fix UFFDIO_API usage with proper two-step feature negotiation 2025-07-09 22:42:23 -07:00
ksm_tests.c ksm_tests: skip hugepage test when Transparent Hugepages are disabled 2025-07-09 22:42:23 -07:00
madv_populate.c selftests/mm: deduplicate test names in madv_populate 2025-05-31 22:46:13 -07:00
Makefile selftests/mm: add process_madvise() tests 2025-08-02 12:06:08 -07:00
map_fixed_noreplace.c selftests/mm: deduplicate second mmap() of 5*PAGE_SIZE at base 2025-05-22 14:55:37 -07:00
map_hugetlb.c selftests/mm: remove unnecessary ia64 code and comment 2024-09-03 21:15:38 -07:00
map_populate.c selftests/mm: add commentary about 9pfs bugs 2025-03-21 22:03:14 -07:00
mdwe_test.c Revert "selftests/harness: remove use of LINE_MAX" 2024-05-19 14:36:20 -07:00
memfd_secret.c Revert "selftests/mm: remove local __NR_* definitions" 2025-03-05 21:36:12 -08:00
merge.c tools/testing/selftests: add mremap() unfaulted/faulted test cases 2025-07-13 16:38:25 -07:00
migration.c selftests/mm: reuse FORCE_READ to replace "asm volatile("" : "+r" (XXX));" 2025-07-24 19:12:41 -07:00
mkdirty.c Revert "selftests/mm: remove local __NR_* definitions" 2025-03-05 21:36:12 -08:00
mlock2-tests.c selftests/mm: deduplicate test logging in test_mlock_lock() 2025-05-31 22:46:08 -07:00
mlock2.h selftests/mm/mlock: print error on failure 2025-03-16 22:06:40 -07:00
mlock-random-test.c selftests/mm/mlock: print error on failure 2025-03-16 22:06:40 -07:00
mrelease_test.c selftests/mm: mrelease_test: conform test to TAP format output 2024-02-22 10:24:49 -08:00
mremap_dontunmap.c selftests/mm: mremap_dontunmap: conform test to TAP format output 2024-02-22 10:24:49 -08:00
mremap_test.c selftests/mm: add test for invalid multi VMA operations 2025-08-19 16:35:55 -07:00
mseal_helpers.h selftests/mm: mseal, self_elf: rename TEST_END_CHECK to REPORT_TEST_PASS 2024-07-03 19:30:07 -07:00
mseal_test.c selftests/mm: Use PKEY_UNRESTRICTED macro 2025-02-17 18:16:36 +00:00
on-fault-limit.c selftests/mm: run_vmtests: remove sudo and conform to tap 2024-02-22 15:38:55 -08:00
pagemap_ioctl.c selftests/mm: reuse FORCE_READ to replace "asm volatile("" : "+r" (XXX));" 2025-07-24 19:12:41 -07:00
pfnmap.c selftests/mm: two fixes for the pfnmap test 2025-05-31 22:46:14 -07:00
pkey_sighandler_tests.c selftests/mm: Use PKEY_UNRESTRICTED macro 2025-02-17 18:16:36 +00:00
pkey_util.c selftests/mm: fix build break when compiling pkey_util.c 2025-05-07 23:39:41 -07:00
pkey-arm64.h selftests/mm: rename pkey register macro 2025-01-13 22:40:56 -08:00
pkey-helpers.h selftests/mm: Use PKEY_UNRESTRICTED macro 2025-02-17 18:16:36 +00:00
pkey-powerpc.h selftests/mm: fix a build failure on powerpc 2025-05-07 23:39:41 -07:00
pkey-x86.h selftests/mm: ensure pkey-*.h define inline functions only 2025-01-13 22:40:55 -08:00
process_madv.c selftests/mm: add process_madvise() tests 2025-08-02 12:06:08 -07:00
protection_keys.c arm64 updates for 6.15: 2025-03-25 13:16:16 -07:00
run_vmtests.sh selftests/mm: add process_madvise() tests 2025-08-02 12:06:08 -07:00
settings selftests/mm: increase timeout from 180 to 900 seconds 2025-06-19 20:48:01 -07:00
soft-dirty.c ksm_tests: skip hugepage test when Transparent Hugepages are disabled 2025-07-09 22:42:23 -07:00
split_huge_page_test.c Summary of significant series in this pull request: 2025-07-31 14:57:54 -07:00
test_hmm.sh selftests/mm: give scripts execute permission 2023-07-14 09:24:31 -07:00
test_page_frag.sh mm: page_frag: add a test module for page_frag 2024-11-11 10:56:26 -08:00
test_vmalloc.sh selftests/mm: give scripts execute permission 2023-07-14 09:24:31 -07:00
thp_settings.c ksm_tests: skip hugepage test when Transparent Hugepages are disabled 2025-07-09 22:42:23 -07:00
thp_settings.h ksm_tests: skip hugepage test when Transparent Hugepages are disabled 2025-07-09 22:42:23 -07:00
thuge-gen.c selftests/mm: use generic read_sysfs in thuge-gen test 2025-07-09 22:42:07 -07:00
transhuge-stress.c selftests/mm: transhuge-stress: conform to TAP format output 2024-02-22 10:24:49 -08:00
uffd-common.c selftests/mm/uffd: rename nr_cpus -> nr_parallel 2025-03-16 22:06:38 -07:00
uffd-common.h selftests/mm/uffd: rename nr_cpus -> nr_parallel 2025-03-16 22:06:38 -07:00
uffd-stress.c selftests/mm: don't fail uffd-stress if too many CPUs 2025-03-16 22:06:38 -07:00
uffd-unit-tests.c selftests/mm: reduce uffd-unit-test poison test to minimum 2025-07-09 22:42:20 -07:00
uffd-wp-mremap.c selftests/mm: skip uffd-wp-mremap if userfaultfd not available 2025-03-16 22:06:38 -07:00
va_high_addr_switch.c selftests/mm: skip test for non-LPA2 and non-LVA systems 2024-07-26 14:33:10 -07:00
va_high_addr_switch.sh selftests/mm: skip hugevm test if kernel config file is not present 2025-05-31 22:46:11 -07:00
virtual_address_range.c selftests/mm: fix validate_addr() helper 2025-06-25 15:55:04 -07:00
vm_util.c selftests/mm: pagemap_scan ioctl: add PFN ZERO test cases 2025-07-19 18:59:44 -07:00
vm_util.h selftests/mm: reuse FORCE_READ to replace "asm volatile("" : "+r" (XXX));" 2025-07-24 19:12:41 -07:00
write_hugetlb_memory.sh selftests/mm: switch to bash from sh 2024-01-25 23:52:20 -08:00
write_to_hugetlbfs.c selftests/mm: fix strncpy() length 2025-01-13 22:40:54 -08:00