Re: [PATCH v2] selftests/proc: make proc-maps-race work with READ_IMPLIES_EXEC

Suren Baghdasaryan <[email protected]>
Newsgroups org.kvack.linux-mm,org.kernel.vger.linux-fsdevel,org.kernel.vger.linux-kernel,org.kernel.vger.linux-kselftest
Message-ID <CAJuCfpGTneUdh6xvZoeds0xt0Y=dc_xgOCninwqSv=HzVnPvoQ@mail.gmail.com>
On Sat, Aug 8, 2026 at 1:04 PM Karl Mehltretter <[email protected]> wrote:
>
> 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.
>
> 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 <[email protected]>

Sorry for missing both versions.

Acked-by: Suren Baghdasaryan <[email protected]>

> ---
> Tested on:
> - QEMU versatilepb/ARM926EJ-S: maps and smaps fail before, pass after
> - QEMU realview-eb-mpcore/ARM11MPCore: maps and smaps pass before and after
>
> Changes since v1:
> - v1 went out without any recipients in To: and received no reply in 19 days.
> - No functional change. reworked the commit message.
>
> v1: https://lore.kernel.org/all/[email protected]/
>
>  tools/testing/selftests/proc/proc-maps-race.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/tools/testing/selftests/proc/proc-maps-race.c b/tools/testing/selftests/proc/proc-maps-race.c
> index 1026d8c400e1..415eccb70468 100644
> --- a/tools/testing/selftests/proc/proc-maps-race.c
> +++ b/tools/testing/selftests/proc/proc-maps-race.c
> @@ -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;
>  }
>
> --
> 2.53.0
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.