From: Sayali Patil <sayalip@linux.ibm.com>
To: "David Hildenbrand (Arm)" <david@kernel.org>,
Andrew Morton <akpm@linux-foundation.org>,
Shuah Khan <shuah@kernel.org>,
linux-mm@kvack.org, linux-kernel@vger.kernel.org,
linux-kselftest@vger.kernel.org,
Ritesh Harjani <ritesh.list@gmail.com>
Cc: Zi Yan <ziy@nvidia.com>, Michal Hocko <mhocko@kernel.org>,
Oscar Salvador <osalvador@suse.de>,
Lorenzo Stoakes <lorenzo.stoakes@oracle.com>,
Dev Jain <dev.jain@arm.com>,
Liam.Howlett@oracle.com, linuxppc-dev@lists.ozlabs.org,
Venkat Rao Bagalkote <venkat88@linux.ibm.com>
Subject: Re: [PATCH v3 07/13] selftest/mm: register existing mapping with userfaultfd in hugepage-mremap
Date: Wed, 1 Apr 2026 20:13:54 +0530 [thread overview]
Message-ID: <7b6652f3-c994-4ef4-87a4-5473cd1254b7@linux.ibm.com> (raw)
In-Reply-To: <142f8c68-43c7-4a6a-bd2c-1c5ebda09b27@kernel.org>
[-- Attachment #1: Type: text/plain, Size: 4700 bytes --]
On 01/04/26 19:48, David Hildenbrand (Arm) wrote:
> On 3/27/26 08:16, Sayali Patil wrote:
>> Previously, register_region_with_uffd() created a new anonymous
>> mapping and overwrote the address supplied by the caller before
>> registering the range with userfaultfd.
>>
>> As a result, userfaultfd was applied to an unrelated anonymous mapping
>> instead of the hugetlb region used by the test.
>>
>> Remove the extra mmap() and register the caller-provided address range
>> directly using UFFDIO_REGISTER_MODE_MISSING, so that faults are
>> generated for the hugetlb mapping used by the test.
>>
>> This ensures userfaultfd operates on the actual hugetlb test region and
>> validates the expected fault handling.
>>
>> Before patch:
>> running ./hugepage-mremap
>> -------------------------
>> TAP version 13
>> 1..1
>> Map haddr: Returned address is 0x7eaa40000000
>> Map daddr: Returned address is 0x7daa40000000
>> Map vaddr: Returned address is 0x7faa40000000
>> Address returned by mmap() = 0x7fff9d000000
>> Mremap: Returned address is 0x7faa40000000
>> First hex is 0
>> First hex is 3020100
>> ok 1 Read same data
>> Totals: pass:1 fail:0 xfail:0 xpass:0 skip:0 error:0
>> [PASS]
>> ok 1 hugepage-mremap
>>
>> After patch:
>> running ./hugepage-mremap
>> -------------------------
>> TAP version 13
>> 1..1
>> Map haddr: Returned address is 0x7eaa40000000
>> Map daddr: Returned address is 0x7daa40000000
>> Map vaddr: Returned address is 0x7faa40000000
>> Registered memory at address 0x7eaa40000000 with userfaultfd
>> Mremap: Returned address is 0x7faa40000000
>> First hex is 0
>> First hex is 3020100
>> ok 1 Read same data
>> Totals: pass:1 fail:0 xfail:0 xpass:0 skip:0 error:0
>> [PASS]
>> ok 1 hugepage-mremap
> Okay, so we tested mremap() of something that is not even hugetlb.
>
>> Fixes: 12b613206474 ("mm, hugepages: add hugetlb vma mremap() test")
>> Tested-by: Venkat Rao Bagalkote<venkat88@linux.ibm.com>
>> Signed-off-by: Sayali Patil<sayalip@linux.ibm.com>
>> ---
>> tools/testing/selftests/mm/hugepage-mremap.c | 21 +++++---------------
>> 1 file changed, 5 insertions(+), 16 deletions(-)
>>
>> diff --git a/tools/testing/selftests/mm/hugepage-mremap.c b/tools/testing/selftests/mm/hugepage-mremap.c
>> index b8f7d92e5a35..e611249080d6 100644
>> --- a/tools/testing/selftests/mm/hugepage-mremap.c
>> +++ b/tools/testing/selftests/mm/hugepage-mremap.c
>> @@ -85,25 +85,14 @@ static void register_region_with_uffd(char *addr, size_t len)
>> if (ioctl(uffd, UFFDIO_API, &uffdio_api) == -1)
>> ksft_exit_fail_msg("ioctl-UFFDIO_API: %s\n", strerror(errno));
>>
>> - /* Create a private anonymous mapping. The memory will be
>> - * demand-zero paged--that is, not yet allocated. When we
>> - * actually touch the memory, it will be allocated via
>> - * the userfaultfd.
>> - */
>> -
>> - addr = mmap(NULL, len, PROT_READ | PROT_WRITE,
>> - MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
>> - if (addr == MAP_FAILED)
>> - ksft_exit_fail_msg("mmap: %s\n", strerror(errno));
>> -
>> - ksft_print_msg("Address returned by mmap() = %p\n", addr);
>> -
>> - /* Register the memory range of the mapping we just created for
>> - * handling by the userfaultfd object. In mode, we request to track
>> - * missing pages (i.e., pages that have not yet been faulted in).
>> + /* Register the passed memory range for handling by the userfaultfd object.
>
> /*
> * ...
>
> While at it.
>
>> + * In mode, we request to track missing pages
>> + * (i.e., pages that have not yet been faulted in).
>> */
>> if (uffd_register(uffd, addr, len, true, false, false))
>> ksft_exit_fail_msg("ioctl-UFFDIO_REGISTER: %s\n", strerror(errno));
>> +
>> + ksft_print_msg("Registered memory at address %p with userfaultfd\n", addr);
>> }
>>
>> int main(int argc, char *argv[])
> Yes, that code is extremely weird. I wonder if this was some
> copy-and-paste from other uffd test code.
>
> Acked-by: David Hildenbrand (Arm)<david@kernel.org>
>
>
Hi David,
Yes, the test operates on hugetlb mappings created with
|MAP_HUGETLB | MAP_POPULATE|and sets up userfaultfd. Consequently,
registering it with |UFFDIO_REGISTER_MODE_MISSING| does not result in
any userfaults.
Originally, the helper function created a separate anonymous mapping and
registered it with userfaultfd instead of the address supplied by the
caller. However, the test operates on hugetlb mappings, and the registered
anonymous mapping is never used in the |mremap()| path being exercised.
Would it be better to remove userfaultfd registration entirely from this
test, since that path is not actually being tested?
Thanks,
Sayali
[-- Attachment #2: Type: text/html, Size: 6586 bytes --]
next prev parent reply other threads:[~2026-04-01 14:44 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-27 7:15 [PATCH v3 00/13] selftests/mm: fix failures and robustness improvements Sayali Patil
2026-03-27 7:15 ` [PATCH v3 01/13] selftests/mm: restore default nr_hugepages value during cleanup in charge_reserved_hugetlb.sh Sayali Patil
2026-04-01 14:52 ` Sayali Patil
2026-04-01 16:05 ` Sayali Patil
2026-03-27 7:15 ` [PATCH v3 02/13] selftests/mm: fix hugetlb pathname construction " Sayali Patil
2026-04-01 14:06 ` David Hildenbrand (Arm)
2026-03-27 7:15 ` [PATCH v3 03/13] selftests/mm: fix hugetlb pathname construction in hugetlb_reparenting_test.sh Sayali Patil
2026-04-01 14:06 ` David Hildenbrand (Arm)
2026-03-27 7:15 ` [PATCH v3 04/13] selftest/mm: fix cgroup task placement and drop memory.current checks " Sayali Patil
2026-04-01 14:08 ` David Hildenbrand (Arm)
2026-04-03 19:59 ` Sayali Patil
2026-03-27 7:15 ` [PATCH v3 05/13] selftests/mm: size tmpfs according to PMD page size in split_huge_page_test Sayali Patil
2026-04-01 16:20 ` Sayali Patil
2026-03-27 7:16 ` [PATCH v3 06/13] selftest/mm: adjust hugepage-mremap test size for large huge pages Sayali Patil
2026-04-01 14:10 ` David Hildenbrand (Arm)
2026-04-01 20:45 ` Sayali Patil
2026-03-27 7:16 ` [PATCH v3 07/13] selftest/mm: register existing mapping with userfaultfd in hugepage-mremap Sayali Patil
2026-04-01 14:18 ` David Hildenbrand (Arm)
2026-04-01 14:43 ` Sayali Patil [this message]
2026-04-02 7:31 ` David Hildenbrand (Arm)
2026-04-03 17:41 ` Sayali Patil
2026-03-27 7:16 ` [PATCH v3 08/13] selftests/mm: ensure destination is hugetlb-backed " Sayali Patil
2026-04-01 14:21 ` David Hildenbrand (Arm)
2026-04-01 14:40 ` Lorenzo Stoakes (Oracle)
2026-04-01 20:39 ` Sayali Patil
2026-04-02 7:33 ` David Hildenbrand (Arm)
2026-04-02 9:05 ` Lorenzo Stoakes (Oracle)
2026-04-03 17:41 ` Sayali Patil
2026-04-07 10:22 ` Lorenzo Stoakes (Oracle)
2026-03-27 7:16 ` [PATCH v3 09/13] selftests/mm: skip uffd-wp-mremap if UFFD write-protect is unsupported Sayali Patil
2026-04-02 6:59 ` Sayali Patil
2026-03-27 7:16 ` [PATCH v3 10/13] selftests/mm: skip uffd-stress test when nr_pages_per_cpu is zero Sayali Patil
2026-04-01 14:23 ` David Hildenbrand (Arm)
2026-03-27 7:16 ` [PATCH v3 11/13] selftests/mm: fix double increment in linked list cleanup in compaction_test Sayali Patil
2026-04-01 14:32 ` Sayali Patil
2026-04-01 14:39 ` David Hildenbrand (Arm)
2026-04-01 17:33 ` Sayali Patil
2026-03-27 7:16 ` [PATCH v3 12/13] selftests/mm: move hwpoison setup into run_test() and silence modprobe output for memory-failure category Sayali Patil
2026-04-02 7:15 ` Sayali Patil
2026-03-27 7:16 ` [PATCH v3 13/13] selftests/cgroup: extend test_hugetlb_memcg.c to support all huge page sizes Sayali Patil
2026-04-03 17:16 ` Sayali Patil
2026-03-27 18:11 ` [PATCH v3 00/13] selftests/mm: fix failures and robustness improvements Andrew Morton
2026-03-30 5:57 ` Sayali Patil
2026-03-30 22:11 ` Andrew Morton
2026-04-01 14:05 ` David Hildenbrand (Arm)
2026-04-01 15:03 ` Sayali Patil
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=7b6652f3-c994-4ef4-87a4-5473cd1254b7@linux.ibm.com \
--to=sayalip@linux.ibm.com \
--cc=Liam.Howlett@oracle.com \
--cc=akpm@linux-foundation.org \
--cc=david@kernel.org \
--cc=dev.jain@arm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=lorenzo.stoakes@oracle.com \
--cc=mhocko@kernel.org \
--cc=osalvador@suse.de \
--cc=ritesh.list@gmail.com \
--cc=shuah@kernel.org \
--cc=venkat88@linux.ibm.com \
--cc=ziy@nvidia.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox