linux/tools/testing/selftests/mm
Zi Yan 5bbc2b785e selftests/mm: fix FORCE_READ to read input value correctly
FORCE_READ() converts input value x to its pointer type then reads from
address x.  This is wrong.  If x is a non-pointer, it would be caught it
easily.  But all FORCE_READ() callers are trying to read from a pointer
and FORCE_READ() basically reads a pointer to a pointer instead of the
original typed pointer.  Almost no access violation was found, except the
one from split_huge_page_test.

Fix it by implementing a simplified READ_ONCE() instead.

Link: https://lkml.kernel.org/r/20250805175140.241656-1-ziy@nvidia.com
Fixes: 3f6bfd4789 ("selftests/mm: reuse FORCE_READ to replace "asm volatile("" : "+r" (XXX));"")
Signed-off-by: Zi Yan <ziy@nvidia.com>
Reviewed-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
Acked-by: David Hildenbrand <david@redhat.com>
Reviewed-by: wang lian <lianux.mm@gmail.com>
Reviewed-by: Wei Yang <richard.weiyang@gmail.com>
Cc: Christian Brauner <brauner@kernel.org>
Cc: Jann Horn <jannh@google.com>
Cc: Kairui Song <ryncsn@gmail.com>
Cc: Liam Howlett <liam.howlett@oracle.com>
Cc: Mark Brown <broonie@kernel.org>
Cc: SeongJae Park <sj@kernel.org>
Cc: Shuah Khan <shuah@kernel.org>
Cc: Vlastimil Babka <vbabka@suse.cz>
Cc: Zi Yan <ziy@nvidia.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
2025-08-27 22:45:42 -07:00
..
page_frag
.gitignore selftests/mm: add process_madvise() tests 2025-08-02 12:06:08 -07:00
Makefile 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
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: fix FORCE_READ to read input value correctly 2025-08-27 22:45:42 -07:00
droppable.c
guard-regions.c selftests/mm: fix FORCE_READ to read input value correctly 2025-08-27 22:45: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
hmm-tests.c
hugepage-mmap.c
hugepage-mremap.c Revert "selftests/mm: remove local __NR_* definitions" 2025-03-05 21:36:12 -08:00
hugepage-shm.c
hugepage-vmemmap.c
hugetlb-madvise.c selftests/mm: fix FORCE_READ to read input value correctly 2025-08-27 22:45:42 -07:00
hugetlb-read-hwpoison.c
hugetlb-soft-offline.c
hugetlb_dio.c selftest: hugetlb_dio: fix test naming 2024-12-05 19:54:44 -08:00
hugetlb_fault_after_madv.c
hugetlb_madv_vs_map.c
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
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
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
map_populate.c selftests/mm: add commentary about 9pfs bugs 2025-03-21 22:03:14 -07:00
mdwe_test.c
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: fix FORCE_READ to read input value correctly 2025-08-27 22:45:42 -07:00
mkdirty.c Revert "selftests/mm: remove local __NR_* definitions" 2025-03-05 21:36:12 -08:00
mlock-random-test.c selftests/mm/mlock: print error on failure 2025-03-16 22:06:40 -07: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
mrelease_test.c
mremap_dontunmap.c
mremap_test.c selftests/mm: add test for invalid multi VMA operations 2025-08-19 16:35:55 -07:00
mseal_helpers.h
mseal_test.c selftests/mm: Use PKEY_UNRESTRICTED macro 2025-02-17 18:16:36 +00:00
on-fault-limit.c
pagemap_ioctl.c selftests/mm: fix FORCE_READ to read input value correctly 2025-08-27 22:45:42 -07:00
pfnmap.c selftests/mm: two fixes for the pfnmap test 2025-05-31 22:46:14 -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
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
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 selftests/mm: fix FORCE_READ to read input value correctly 2025-08-27 22:45:42 -07:00
test_hmm.sh
test_page_frag.sh
test_vmalloc.sh
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
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
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: fix FORCE_READ to read input value correctly 2025-08-27 22:45:42 -07:00
write_hugetlb_memory.sh
write_to_hugetlbfs.c selftests/mm: fix strncpy() length 2025-01-13 22:40:54 -08:00