Re: [PATCH 2/2] tools/selftests: add guard region test for /proc/$pid/pagemap

From: Kalesh Singh
Date: Fri Feb 21 2025 - 12:19:10 EST


On Fri, Feb 21, 2025 at 5:51 AM Lorenzo Stoakes
<lorenzo.stoakes@xxxxxxxxxx> wrote:
>
> On Fri, Feb 21, 2025 at 12:05:23PM +0000, Lorenzo Stoakes wrote:
> > Add a test to the guard region self tests to assert that the
> > /proc/$pid/pagemap information now made availabile to the user correctly
> > identifies and reports guard regions.
> >
> > As a part of this change, update vm_util.h to add the new bit (note there
> > is no header file in the kernel where this is exposed, the user is expected
> > to provide their own mask) and utilise the helper functions there for
> > pagemap functionality.
> >
> > Signed-off-by: Lorenzo Stoakes <lorenzo.stoakes@xxxxxxxxxx>

Reviewed-by: Kalesh Singh <kaleshsingh@xxxxxxxxxx>

>
> Andrew - Apologies,
>
> I managed to not commit a change I quickly made before sending this out
> (I'm ill, seems it is having an impact...)
>
> If the series is ok would you mind tacking on this fix-patch? It's simply
> to rename a clumsily named define here.
>
> No functional changes...
>
> Thanks!
>
> ----8<----
> From 60be19e88b3bfe9a6ec459115f0027721c494b30 Mon Sep 17 00:00:00 2001
> From: Lorenzo Stoakes <lorenzo.stoakes@xxxxxxxxxx>
> Date: Fri, 21 Feb 2025 13:45:48 +0000
> Subject: [PATCH] fixup define name
>
> Fix badly named define so it's consistent with the others.
>
> Signed-off-by: Lorenzo Stoakes <lorenzo.stoakes@xxxxxxxxxx>
> ---
> tools/testing/selftests/mm/guard-regions.c | 6 +++---
> tools/testing/selftests/mm/vm_util.h | 2 +-
> 2 files changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/tools/testing/selftests/mm/guard-regions.c b/tools/testing/selftests/mm/guard-regions.c
> index 0c7183e8b661..280d1831bf73 100644
> --- a/tools/testing/selftests/mm/guard-regions.c
> +++ b/tools/testing/selftests/mm/guard-regions.c
> @@ -2054,7 +2054,7 @@ TEST_F(guard_regions, pagemap)
> for (i = 0; i < 10; i++) {
> char *ptr_p = &ptr[i * page_size];
> unsigned long entry = pagemap_get_entry(proc_fd, ptr_p);
> - unsigned long masked = entry & PM_GUARD_REGION_MASK;
> + unsigned long masked = entry & PM_GUARD_REGION;
>
> ASSERT_EQ(masked, 0);
> }
> @@ -2070,9 +2070,9 @@ TEST_F(guard_regions, pagemap)
> for (i = 0; i < 10; i++) {
> char *ptr_p = &ptr[i * page_size];
> unsigned long entry = pagemap_get_entry(proc_fd, ptr_p);
> - unsigned long masked = entry & PM_GUARD_REGION_MASK;
> + unsigned long masked = entry & PM_GUARD_REGION;
>
> - ASSERT_EQ(masked, i % 2 == 0 ? PM_GUARD_REGION_MASK : 0);
> + ASSERT_EQ(masked, i % 2 == 0 ? PM_GUARD_REGION : 0);
> }
>
> ASSERT_EQ(close(proc_fd), 0);
> diff --git a/tools/testing/selftests/mm/vm_util.h b/tools/testing/selftests/mm/vm_util.h
> index 73a11443b7f6..0e629586556b 100644
> --- a/tools/testing/selftests/mm/vm_util.h
> +++ b/tools/testing/selftests/mm/vm_util.h
> @@ -10,7 +10,7 @@
> #define PM_SOFT_DIRTY BIT_ULL(55)
> #define PM_MMAP_EXCLUSIVE BIT_ULL(56)
> #define PM_UFFD_WP BIT_ULL(57)
> -#define PM_GUARD_REGION_MASK BIT_ULL(58)
> +#define PM_GUARD_REGION BIT_ULL(58)
> #define PM_FILE BIT_ULL(61)
> #define PM_SWAP BIT_ULL(62)
> #define PM_PRESENT BIT_ULL(63)
> --
> 2.48.1