]> git.hungrycats.org Git - linux/commitdiff
selftests/proc: make proc-maps-race work with READ_IMPLIES_EXEC
authorKarl Mehltretter <kmehltretter@gmail.com>
Sat, 8 Aug 2026 20:03:12 +0000 (22:03 +0200)
committerAndrew Morton <akpm@linux-foundation.org>
Tue, 25 Aug 2026 01:43:33 +0000 (18:43 -0700)
test_maps_tearing_from_split times out when READ_IMPLIES_EXEC is set.
This happens by default on pre-ARMv6 CPUs, which lack no-execute support.

split_vma() re-maps the first page with mod_info->prot | PROT_EXEC to make
it differ from its neighbours.  With READ_IMPLIES_EXEC the original
mapping is already executable, so no split occurs and the test hangs
waiting for the modifier child.

Use PROT_NONE for the split mapping, which always differs from its
readable neighbours.

Link: https://lore.kernel.org/20260808200312.6326-1-kmehltretter@gmail.com
Fixes: beb69e817246 ("selftests/proc: add /proc/pid/maps tearing from vma split test")
Assisted-by: Codex:gpt-5.6-terra
Signed-off-by: Karl Mehltretter <kmehltretter@gmail.com>
Acked-by: Suren Baghdasaryan <surenb@google.com>
Cc: Alexey Dobriyan <adobriyan@gmail.com>
Cc: Jann Horn <jannh@google.com>
Cc: Liam R. Howlett <liam@infradead.org>
Cc: Shuah Khan <shuah@kernel.org>
Cc: Vlastimil Babka <vbabka@suse.cz>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
tools/testing/selftests/proc/proc-maps-race.c

index 1026d8c400e1bab68664eb6ea7f97c80b08ed062..415eccb70468482f360273b7545bf21251d5ddf2 100644 (file)
@@ -490,7 +490,8 @@ static bool query_addr_at(int maps_fd, void *addr,
 
 static inline bool split_vma(FIXTURE_DATA(proc_maps_race) *self)
 {
-       return mmap(self->mod_info->addr, self->page_size, self->mod_info->prot | PROT_EXEC,
+       /* PROT_NONE differs from both readable neighbors. */
+       return mmap(self->mod_info->addr, self->page_size, PROT_NONE,
                    MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED, -1, 0) != MAP_FAILED;
 }