On 2025/12/6 13:55, Lance Yang wrote:
From: Lance Yang lance.yang@linux.dev
On Fri, 5 Dec 2025 22:35:55 +0100, David Hildenbrand (Red Hat) wrote:
We switched from (wrongly) using the page count to an independent shared count. Now, shared page tables have a refcount of 1 (excluding speculative references) and instead use ptdesc->pt_share_count to identify sharing.
We didn't convert hugetlb_pmd_shared(), so right now, we would never detect a shared PMD table as such, because sharing/unsharing no longer touches the refcount of a PMD table.
Page migration, like mbind() or migrate_pages() would allow for migrating folios mapped into such shared PMD tables, even though the folios are not exclusive. In smaps we would account them as "private" although they are "shared", and we would be wrongly setting the PM_MMAP_EXCLUSIVE in the pagemap interface.
Fix it by properly using ptdesc_pmd_is_shared() in hugetlb_pmd_shared().
Fixes: 59d9094df3d7 ("mm: hugetlb: independent PMD page table shared count") Cc: stable@vger.kernel.org Cc: Liu Shixin liushixin2@huawei.com Signed-off-by: David Hildenbrand (Red Hat) david@kernel.org
Good catch! Feel free to add:
Reviewed-by: Lance yang lance.yang@linux.dev
Actually:
Reviewed-by: Lance Yang lance.yang@linux.dev