[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CABi2SkWxMqjWQWe-ZsyKVkMAr8ZwysQnkVZz55hYz-DXV0L9aw@mail.gmail.com>
Date: Wed, 7 Aug 2024 14:06:34 -0700
From: Jeff Xu <jeffxu@...omium.org>
To: Jeff Xu <jeffxu@...gle.com>
Cc: Pedro Falcato <pedro.falcato@...il.com>, akpm@...ux-foundation.org, willy@...radead.org,
torvalds@...ux-foundation.org, Liam.Howlett@...cle.com,
linux-kernel@...r.kernel.org, linux-kselftest@...r.kernel.org,
linux-mm@...ck.org, dave.hansen@...el.com, linux-hardening@...r.kernel.org,
lorenzo.stoakes@...cle.com, mpe@...erman.id.au, oliver.sang@...el.com,
vbabka@...e.cz
Subject: Re: [PATCH v1] selftest mm/mseal: fix test_seal_mremap_move_dontunmap_anyaddr
On Wed, Aug 7, 2024 at 11:03 AM Jeff Xu <jeffxu@...gle.com> wrote:
>
> On Wed, Aug 7, 2024 at 9:38 AM Pedro Falcato <pedro.falcato@...il.com> wrote:
> >
> > On Wed, Aug 7, 2024 at 4:35 PM <jeffxu@...omium.org> wrote:
> > <snip>
> > > /* shrink from 4 pages to 2 pages. */
> > > - ret2 = mremap(ptr, size, 2 * page_size, 0, 0);
> > > + ret2 = sys_mremap(ptr, size, 2 * page_size, 0, 0);
> > > if (seal) {
> > > - FAIL_TEST_IF_FALSE(ret2 == MAP_FAILED);
> > > + FAIL_TEST_IF_FALSE(ret2 == (void *) MAP_FAILED);
> >
> > MAP_FAILED is already void *
> >
> > <snip>
> > > @@ -1449,18 +1457,16 @@ static void test_seal_mremap_move_dontunmap_anyaddr(bool seal)
> > > }
> > >
> > > /*
> > > - * The 0xdeaddead should not have effect on dest addr
> > > + * The 0xdead0000 should not have effect on dest addr
> > > * when MREMAP_DONTUNMAP is set.
> > > */
> > > - ret2 = mremap(ptr, size, size, MREMAP_MAYMOVE | MREMAP_DONTUNMAP,
> > > - 0xdeaddead);
> > > + ret2 = sys_mremap(ptr, size, size, MREMAP_MAYMOVE | MREMAP_DONTUNMAP,
> > > + (void *) 0xdead0000);
> >
> > You still didn't explain why this test is actually needed. Why are you
> > testing MREMAP_DONTUNMAP's hint system?
>
> I responded in my previous email. The test is to make sure when
> sealing is applied, the call fails with correct error code. I will
> update the comment in v2 to clarify that.
>
> > This has nothing to do with mseal, you already test the
> > MREMAP_DONTUNMAP and MREMAP_FIXED paths in other tests.
> The remap code path is quite tricky, with many flags directing the call flow.
> The difference might not be that obvious:
>
> test_seal_mremap_move_dontunmap use 0 as new_addr, 0 indicates
> allocating a new memory.
> test_seal_mremap_move_dontunmap_anyaddr uses any arbitrary address as
> a new address.
>
> > You also don't know if 0xdead0000 is a valid page (hexagon for
> > instance seems to support 256KiB and 1MiB pages, so does ppc32, and
> > this is not something that should be hardcoded).
> >
> usually hardcode value is not good practice, but the point of this
> test is to show
> mremap can really relocate the mapping to an arbitrary address.
>
> Do you have any suggestions here ? I can think of two options to choose from:
>
> 1> use 0xd0000000
> 2> allocate a memory then free it, reuse the ptr.
>
I will send out V2 that addresses those comments above.
Thanks
Powered by blists - more mailing lists