]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
mm/rmap: fix two comments related to huge_pmd_unshare()
authorDavid Hildenbrand (Red Hat) <david@kernel.org>
Tue, 23 Dec 2025 21:40:36 +0000 (22:40 +0100)
committerAndrew Morton <akpm@linux-foundation.org>
Tue, 20 Jan 2026 17:34:26 +0000 (09:34 -0800)
PMD page table unsharing no longer touches the refcount of a PMD page
table.  Also, it is not about dropping the refcount of a "PMD page" but
the "PMD page table".

Let's just simplify by saying that the PMD page table was unmapped,
consequently also unmapping the folio that was mapped into this page.

This code should be deduplicated in the future.

Link: https://lkml.kernel.org/r/20251223214037.580860-4-david@kernel.org
Fixes: 59d9094df3d7 ("mm: hugetlb: independent PMD page table shared count")
Signed-off-by: David Hildenbrand (Red Hat) <david@kernel.org>
Reviewed-by: Rik van Riel <riel@surriel.com>
Tested-by: Laurence Oberman <loberman@redhat.com>
Reviewed-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
Acked-by: Oscar Salvador <osalvador@suse.de>
Cc: Liu Shixin <liushixin2@huawei.com>
Cc: Harry Yoo <harry.yoo@oracle.com>
Cc: Lance Yang <lance.yang@linux.dev>
Cc: "Uschakow, Stanislav" <suschako@amazon.de>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/rmap.c

index f955f02d570ed8bcf770804a829cebc82cfdd2f3..748f48727a162f68abca3b445c46cdf7205de0fe 100644 (file)
--- a/mm/rmap.c
+++ b/mm/rmap.c
@@ -2016,14 +2016,8 @@ static bool try_to_unmap_one(struct folio *folio, struct vm_area_struct *vma,
                                        flush_tlb_range(vma,
                                                range.start, range.end);
                                        /*
-                                        * The ref count of the PMD page was
-                                        * dropped which is part of the way map
-                                        * counting is done for shared PMDs.
-                                        * Return 'true' here.  When there is
-                                        * no other sharing, huge_pmd_unshare
-                                        * returns false and we will unmap the
-                                        * actual page and drop map count
-                                        * to zero.
+                                        * The PMD table was unmapped,
+                                        * consequently unmapping the folio.
                                         */
                                        goto walk_done;
                                }
@@ -2416,14 +2410,8 @@ static bool try_to_migrate_one(struct folio *folio, struct vm_area_struct *vma,
                                                range.start, range.end);
 
                                        /*
-                                        * The ref count of the PMD page was
-                                        * dropped which is part of the way map
-                                        * counting is done for shared PMDs.
-                                        * Return 'true' here.  When there is
-                                        * no other sharing, huge_pmd_unshare
-                                        * returns false and we will unmap the
-                                        * actual page and drop map count
-                                        * to zero.
+                                        * The PMD table was unmapped,
+                                        * consequently unmapping the folio.
                                         */
                                        page_vma_mapped_walk_done(&pvmw);
                                        break;