On Tue, Sep 08, 2026 at 01:51:02PM +0100, Kiryl Shutsemau wrote:
> +static void *mremapper_fn(void *arg)
> +{
> +     unsigned int seed = (unsigned long)arg;
> +
> +     while (!stop) {
> +             void *p;
> +
> +             p = mremap(mremap_area, hpage_pmd_size, hpage_pmd_size,
> +                        MREMAP_MAYMOVE | MREMAP_FIXED, mremap_scratch);
> +             if (p == MAP_FAILED)
> +                     ksft_exit_fail_perror("mremap() away");
> +             for (int i = 0; i < 8; i++)
> +                     mremap_scratch[(rand_r(&seed) %
> +                             (hpage_pmd_size / page_size)) * page_size] = 1;
> +             p = mremap(mremap_scratch, hpage_pmd_size, hpage_pmd_size,
> +                        MREMAP_MAYMOVE | MREMAP_FIXED, mremap_area);
> +             if (p == MAP_FAILED)
> +                     ksft_exit_fail_perror("mremap() back");
> +             usleep(rand_r(&seed) % 2000);
> +     }
> +     return NULL;
> +}

Sashiko pointed out that mremap() freed scratch area and it has to be
re-reserved for next cycle.

Here's fixup:

diff --git a/tools/testing/selftests/mm/khugepaged_race.c 
b/tools/testing/selftests/mm/khugepaged_race.c
index c3478b5123e2..ccfe655b3ddd 100644
--- a/tools/testing/selftests/mm/khugepaged_race.c
+++ b/tools/testing/selftests/mm/khugepaged_race.c
@@ -209,6 +209,11 @@ static void *mremapper_fn(void *arg)
                          MREMAP_MAYMOVE | MREMAP_FIXED, mremap_area);
                if (p == MAP_FAILED)
                        ksft_exit_fail_perror("mremap() back");
+               /* The move back unmapped the scratch address: claim it again */
+               if (mmap(mremap_scratch, hpage_pmd_size, PROT_NONE,
+                       MAP_ANONYMOUS | MAP_PRIVATE | MAP_FIXED_NOREPLACE,
+                       -1, 0) != (void *)mremap_scratch)
+                       ksft_exit_fail_perror("mmap() mremap scratch");
                usleep(rand_r(&seed) % 2000);
        }
        return NULL;
-- 
  Kiryl Shutsemau / Kirill A. Shutemov

Reply via email to