]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
mm,hugetlb: drop obsolete comment about non-present pte and second faults
authorOscar Salvador <osalvador@suse.de>
Mon, 30 Jun 2025 14:42:11 +0000 (16:42 +0200)
committerAndrew Morton <akpm@linux-foundation.org>
Sun, 13 Jul 2025 23:38:22 +0000 (16:38 -0700)
There is a comment in hugetlb_fault() that does not hold anymore.  This
one:

 /*
  * vmf.orig_pte could be a migration/hwpoison vmf.orig_pte at this
  * point, so this check prevents the kernel from going below assuming
  * that we have an active hugepage in pagecache. This goto expects
  * the 2nd page fault, and is_hugetlb_entry_(migration|hwpoisoned)
  * check will properly handle it.
  */

This was written because back in the day we used to do:

 hugetlb_fault () {
  ptep = huge_pte_offset(...)
  if (ptep) {
    entry = huge_ptep_get(ptep)
    if (unlikely(is_hugetlb_entry_migration(entry))
        ...
    else if (unlikely(is_hugetlb_entry_hwpoisoned(entry)))
        ...
  }

  ...
  ...

  /*
   * entry could be a migration/hwpoison entry at this point, so this
   * check prevents the kernel from going below assuming that we have
   * a active hugepage in pagecache. This goto expects the 2nd page fault,
   * and is_hugetlb_entry_(migration|hwpoisoned) check will properly
   * handle it.
   */
  if (!pte_present(entry))
          goto out_mutex;
  ...
 }

The code was designed to check for hwpoisoned/migration entries upfront,
and then bail out if further down the pte was not present anymore, relying
on the second fault to properly handle migration/hwpoison entries that
time around.

The way we handle this is different nowadays, so drop the misleading
comment.

Link: https://lkml.kernel.org/r/20250627102904.107202-5-osalvador@suse.de
Link: https://lkml.kernel.org/r/20250630144212.156938-5-osalvador@suse.de
Signed-off-by: Oscar Salvador <osalvador@suse.de>
Acked-by: David Hildenbrand <david@redhat.com>
Cc: Gavin Guo <gavinguo@igalia.com>
Cc: Muchun Song <muchun.song@linux.dev>
Cc: Peter Xu <peterx@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/hugetlb.c

index 3e5cefd5e1d9073eec78c2c18555d74f1c5473bf..eead921831bf50441852ec4ddea5e852e75bb23f 100644 (file)
@@ -6727,13 +6727,7 @@ vm_fault_t hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma,
 
        ret = 0;
 
-       /*
-        * vmf.orig_pte could be a migration/hwpoison vmf.orig_pte at this
-        * point, so this check prevents the kernel from going below assuming
-        * that we have an active hugepage in pagecache. This goto expects
-        * the 2nd page fault, and is_hugetlb_entry_(migration|hwpoisoned)
-        * check will properly handle it.
-        */
+       /* Not present, either a migration or a hwpoisoned entry */
        if (!pte_present(vmf.orig_pte)) {
                if (unlikely(is_hugetlb_entry_migration(vmf.orig_pte))) {
                        /*