From: sashiko-bot@kernel.org
To: "Kiryl Shutsemau" <kirill@shutemov.name>
Cc: kvm@vger.kernel.org
Subject: Re: [PATCH v5 07/18] mm: rename uffd-wp PTE accessors to uffd
Date: Tue, 26 May 2026 13:29:18 +0000 [thread overview]
Message-ID: <20260526132918.C84591F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260526130509.2748441-8-kirill@shutemov.name>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
Pre-existing issues:
- [Critical] copy_hugetlb_page_range() incorrectly applies huge_pte_clear_uffd() to non-present swap entries (HWPoison and Migration entries), which fails to clear the intended bit and can corrupt the swap entry's offset.
--
commit e93aa2eb8e2d0c3ad18e5c1d814ca772bba7232e
Author: Kiryl Shutsemau (Meta) <kas@kernel.org>
mm: rename uffd-wp PTE accessors to uffd
This commit mechanically renames uffd-wp PTE accessors, capability queries,
and scan enums to drop the -wp suffix. This prepares the codebase for
userfaultfd RWP to reuse the same PTE bit for access tracking.
> diff --git a/mm/hugetlb.c b/mm/hugetlb.c
> index 571212b80835e..d0c81a056ae2a 100644
> --- a/mm/hugetlb.c
> +++ b/mm/hugetlb.c
> @@ -4918,10 +4918,10 @@ int copy_hugetlb_page_range(struct mm_struct *dst, struct mm_struct *src,
> softleaf = softleaf_from_pte(entry);
> if (unlikely(softleaf_is_hwpoison(softleaf))) {
> if (!userfaultfd_wp(dst_vma))
> - entry = huge_pte_clear_uffd_wp(entry);
> + entry = huge_pte_clear_uffd(entry);
[Severity: Critical]
This is a pre-existing issue, but doesn't this incorrectly apply the
present-PTE clear function to a non-present swap entry?
For non-present entries like hwpoison or migration entries, shouldn't we use
pte_swp_clear_uffd() instead of huge_pte_clear_uffd()?
Since huge_pte_clear_uffd() targets the present-PTE bit index, which on
architectures like arm64 is located at a different bit (e.g., bit 58) than
the swap PTE bit index (bit 3).
Migration entries store the page PFN in the swap offset. Could clearing the
wrong bit accidentally corrupt the PFN? When the migration completes, this
corrupted PFN could then be restored into the PTE.
> set_huge_pte_at(dst, addr, dst_pte, entry, sz);
> } else if (unlikely(softleaf_is_migration(softleaf))) {
> - bool uffd_wp = pte_swp_uffd_wp(entry);
> + bool uffd = pte_swp_uffd(entry);
>
> if (!softleaf_is_migration_read(softleaf) && cow) {
> /*
> @@ -4931,12 +4931,12 @@ int copy_hugetlb_page_range(struct mm_struct *dst, struct mm_struct *src,
> softleaf = make_readable_migration_entry(
> swp_offset(softleaf));
> entry = swp_entry_to_pte(softleaf);
> - if (userfaultfd_wp(src_vma) && uffd_wp)
> - entry = pte_swp_mkuffd_wp(entry);
> + if (userfaultfd_wp(src_vma) && uffd)
> + entry = pte_swp_mkuffd(entry);
> set_huge_pte_at(src, addr, src_pte, entry, sz);
> }
> if (!userfaultfd_wp(dst_vma))
> - entry = huge_pte_clear_uffd_wp(entry);
> + entry = huge_pte_clear_uffd(entry);
[Severity: Critical]
This isn't a bug introduced by this patch, but this shares the same issue as
above. We are clearing the UFFD bit on a migration entry using
huge_pte_clear_uffd().
Is it possible to change this to pte_swp_clear_uffd() to avoid corrupting
the migration entry's PFN?
> set_huge_pte_at(dst, addr, dst_pte, entry, sz);
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260526130509.2748441-1-kirill@shutemov.name?part=7
next prev parent reply other threads:[~2026-05-26 13:29 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-26 13:04 [PATCH v5 00/18] userfaultfd: working set tracking for VM guest memory Kiryl Shutsemau
2026-05-26 13:04 ` [PATCH v5 01/18] fs/proc/task_mmu: fix make_uffd_wp_huge_pte() prot-update race Kiryl Shutsemau
2026-05-26 13:46 ` sashiko-bot
2026-05-26 13:04 ` [PATCH v5 02/18] mm/huge_memory: preserve pmd_swp_uffd_wp on device-private PMD downgrade Kiryl Shutsemau
2026-05-26 13:43 ` sashiko-bot
2026-05-26 13:04 ` [PATCH v5 03/18] userfaultfd: gate must_wait writability check on pte_present() Kiryl Shutsemau
2026-05-26 13:44 ` sashiko-bot
2026-05-26 13:04 ` [PATCH v5 04/18] mm: skip out-of-range bits in mk_vma_flags() Kiryl Shutsemau
2026-05-29 14:00 ` Lorenzo Stoakes
2026-05-29 16:09 ` Kiryl Shutsemau
2026-06-01 9:37 ` Lorenzo Stoakes
2026-05-30 16:52 ` Mike Rapoport
2026-06-01 7:42 ` Lorenzo Stoakes
2026-06-01 14:08 ` Kiryl Shutsemau
2026-06-01 14:28 ` Mike Rapoport
2026-05-26 13:04 ` [PATCH v5 05/18] mm: decouple protnone helpers from CONFIG_NUMA_BALANCING Kiryl Shutsemau
2026-05-26 13:04 ` [PATCH v5 06/18] mm: rename uffd-wp PTE bit macros to uffd Kiryl Shutsemau
2026-05-26 13:04 ` [PATCH v5 07/18] mm: rename uffd-wp PTE accessors " Kiryl Shutsemau
2026-05-26 13:29 ` sashiko-bot [this message]
2026-05-26 13:04 ` [PATCH v5 08/18] mm: add VM_UFFD_RWP VMA flag Kiryl Shutsemau
2026-05-26 14:37 ` sashiko-bot
2026-05-29 7:24 ` Lorenzo Stoakes
2026-05-29 13:07 ` Kiryl Shutsemau
2026-05-29 14:00 ` Lorenzo Stoakes
2026-05-26 13:04 ` [PATCH v5 09/18] mm: add MM_CP_UFFD_RWP change_protection() flag Kiryl Shutsemau
2026-05-26 14:07 ` sashiko-bot
2026-05-29 1:19 ` SeongJae Park
2026-05-26 13:04 ` [PATCH v5 10/18] mm: preserve RWP marker across PTE rewrites Kiryl Shutsemau
2026-05-26 14:15 ` sashiko-bot
2026-05-26 13:04 ` [PATCH v5 11/18] mm: handle VM_UFFD_RWP in khugepaged, rmap, and GUP Kiryl Shutsemau
2026-05-26 15:04 ` sashiko-bot
2026-05-26 13:05 ` [PATCH v5 12/18] userfaultfd: add UFFDIO_REGISTER_MODE_RWP and UFFDIO_RWPROTECT plumbing Kiryl Shutsemau
2026-05-26 14:45 ` sashiko-bot
2026-05-26 13:05 ` [PATCH v5 13/18] mm/userfaultfd: add RWP fault delivery and expose UFFDIO_REGISTER_MODE_RWP Kiryl Shutsemau
2026-05-26 14:33 ` sashiko-bot
2026-05-26 13:05 ` [PATCH v5 14/18] mm/pagemap: add PAGE_IS_ACCESSED for RWP tracking Kiryl Shutsemau
2026-05-26 14:37 ` sashiko-bot
2026-05-26 13:05 ` [PATCH v5 15/18] userfaultfd: add UFFD_FEATURE_RWP_ASYNC for async fault resolution Kiryl Shutsemau
2026-05-26 13:05 ` [PATCH v5 16/18] userfaultfd: add UFFDIO_SET_MODE for runtime sync/async toggle Kiryl Shutsemau
2026-05-26 15:07 ` sashiko-bot
2026-05-26 13:05 ` [PATCH v5 17/18] selftests/mm: add userfaultfd RWP tests Kiryl Shutsemau
2026-05-26 13:05 ` [PATCH v5 18/18] Documentation/userfaultfd: document RWP working set tracking Kiryl Shutsemau
2026-05-26 14:51 ` sashiko-bot
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=20260526132918.C84591F000E9@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=kirill@shutemov.name \
--cc=kvm@vger.kernel.org \
--cc=sashiko-reviews@lists.linux.dev \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.