Re: [PATCH v2 0/7] mm/khugepaged: several cleanups

From: Nico Pache

Date: Wed Jul 15 2026 - 01:58:20 EST




On Tue, Jul 14, 2026 at 10:41 PM Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> wrote:
>
> On Tue, 14 Jul 2026 20:59:29 -0600 Nico Pache <npache@xxxxxxxxxx> wrote:
>
> > The following changes stem from a number of reviews during my khugepaged
> > mTHP support series [1]. Some of these are minor code cleanups, issues or
> > reviews that we decided to deferred to a followup series, or in the case
> > of the more major patch of the series, changes [2] Lance Yang attempted
> > while my series was in-flight and we decided to wait till later to try.
> >
> > The first 3 patches introduce helper functions to increase code reuse and
> > readability. This includes a per-scan state clearing function, extracting
> > the young page check into a helper, and a count_collapse_event() function
> > to reduce a repetative pattern used across mTHP collapse.
> >
> > The 4th patch was the byproduct of me throwing Claude at all the
> > comments in khugepaged verifying and looking for any outdated info.
> >
> > The 5th patch is based on Lance Yang's commit series [2] trying to extract
> > the PTE state checking into a helper function. This required a bit of
> > rewriting due to differences after mTHP collapse was introduced. I also
> > took into account the changes requested during his patches review cycle.
> >
> > The remaining 2 patches were review points during my mTHP series that we
> > agreed can be deferred to a later series.
> >
> > Thank you to those whos reviews and work I leveraged to achieve these
> > cleanups.
>
> Sashiko seems to have a good point about [5/7]:
> https://sashiko.dev/#/patchset/20260715025941.1571316-1-npache@xxxxxxxxxx

Ah whoops! When i sent the fixup for V1 I only did it in one location when it
should have been for both callers of collapse_check_pte(). Sorry about that.

Here is the fixup for the missing variable assignment

Thank you,
-- Nico

commit 52adeb9998fe84c1f997a3b3b6e98c93f9754c95
Author: Nico Pache <npache@xxxxxxxxxx>
Date: Tue Jul 14 23:50:54 2026 -0600

fixup: always set the local folio after collapse_check_pte()

If we dont set the local folio to the result from collapse_check_pte()
we can end up with cases that the goto out will result in pointing to a
stale folio from the last successful PTE check.

Signed-off-by: Nico Pache <npache@xxxxxxxxxx>

diff --git a/mm/khugepaged.c b/mm/khugepaged.c
index 40125dcb4de9..e5e349d0662e 100644
--- a/mm/khugepaged.c
+++ b/mm/khugepaged.c
@@ -1747,13 +1747,13 @@ static enum scan_result collapse_scan_pmd(struct mm_struct *mm,
cc->progress++;

pte_check = collapse_check_pte(pteval, addr, &ctx);
+ folio = ctx.folio;
if (pte_check == PTE_CHECK_FAIL) {
result = ctx.result;
goto out_unmap;
}
if (pte_check == PTE_CHECK_CONTINUE)
continue;
- folio = ctx.folio;

/* Set bit for occupied pages */
__set_bit(i, cc->mthp_present_ptes);


>