From: Dev Jain <dev.jain@arm.com>
To: muchun.song@linux.dev, osalvador@suse.de,
akpm@linux-foundation.org, ljs@kernel.org, david@kernel.org,
liam@infradead.org
Cc: Dev Jain <dev.jain@arm.com>,
riel@surriel.com, vbabka@kernel.org, harry@kernel.org,
jannh@google.com, lance.yang@linux.dev, kas@kernel.org,
linux-mm@kvack.org, linux-kernel@vger.kernel.org,
rcampbell@nvidia.com, apopple@nvidia.com, ziy@nvidia.com,
matthew.brost@intel.com, joshua.hahnjy@gmail.com,
rakie.kim@sk.com, byungchul@sk.com, gourry@gourry.net,
ying.huang@linux.alibaba.com, j-nomura@ce.jp.nec.com,
nao.horiguchi@gmail.com, ak@linux.intel.com, mel@csn.ul.ie,
pfalcato@suse.de, jpoimboe@kernel.org, dave.hansen@intel.com,
tglx@kernel.org, catalin.marinas@arm.com, will@kernel.org,
linux-arm-kernel@lists.infradead.org, ryan.roberts@arm.com,
anshuman.khandual@arm.com, stable@vger.kernel.org
Subject: [PATCH v2 1/6] arm64: make huge_ptep_get handled unaligned addresses
Date: Thu, 2 Jul 2026 05:13:35 +0000 [thread overview]
Message-ID: <20260702051341.126509-2-dev.jain@arm.com> (raw)
In-Reply-To: <20260702051341.126509-1-dev.jain@arm.com>
huge_ptep_get() can be handed a virtual address pointing to the middle of
a contpmd/contpte mapped hugetlb folio (examples of callers are
pagemap_hugetlb_range, page_mapped_in_vma).
The arm64 helper rewalks the pgtables in find_num_contig to answer whether
the huge pte we have maps a contpmd or a contpte hugetlb folio, and
returns CONT_PMDS or CONT_PTES, so that it can collect a/d bits over the
contiguous ptes. We can falsely return CONT_PTES instead of CONT_PMDS
if the addr is not aligned.
Fix this by aligning the pmdp pointer down to a contpmd base before
checking equality with the passed huge pte pointer, to correctly answer
whether the huge pte is the base of a contpmd block.
Fixes: 29cb80519689 ("arm64: hugetlb: Cleanup huge_pte size discovery mechanisms")
Cc: stable@vger.kernel.org
Signed-off-by: Dev Jain <dev.jain@arm.com>
---
arch/arm64/mm/hugetlbpage.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm64/mm/hugetlbpage.c b/arch/arm64/mm/hugetlbpage.c
index 30772a909aea3..8e799c1fe0aa6 100644
--- a/arch/arm64/mm/hugetlbpage.c
+++ b/arch/arm64/mm/hugetlbpage.c
@@ -87,7 +87,7 @@ static int find_num_contig(struct mm_struct *mm, unsigned long addr,
p4dp = p4d_offset(pgdp, addr);
pudp = pud_offset(p4dp, addr);
pmdp = pmd_offset(pudp, addr);
- if ((pte_t *)pmdp == ptep) {
+ if ((pte_t *)PTR_ALIGN_DOWN(pmdp, sizeof(*pmdp) * CONT_PMDS) == ptep) {
*pgsize = PMD_SIZE;
return CONT_PMDS;
}
--
2.43.0
next prev parent reply other threads:[~2026-07-02 5:14 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-02 5:13 [PATCH v2 0/6] Fix incorrect access of hugetlb pte entries Dev Jain
2026-07-02 5:13 ` Dev Jain [this message]
2026-07-02 15:28 ` [PATCH v2 1/6] arm64: make huge_ptep_get handled unaligned addresses David Hildenbrand (Arm)
2026-07-02 5:13 ` [PATCH v2 2/6] mm/rmap: use huge_ptep_get() in try_to_unmap_one() Dev Jain
2026-07-02 8:47 ` Muchun Song
2026-07-02 9:08 ` Dev Jain
2026-07-02 9:35 ` Muchun Song
2026-07-02 15:30 ` David Hildenbrand (Arm)
2026-07-02 15:32 ` David Hildenbrand (Arm)
2026-07-03 5:30 ` Dev Jain
2026-07-03 7:06 ` David Hildenbrand (Arm)
2026-07-02 5:13 ` [PATCH v2 3/6] mm/rmap: use huge_ptep_get() in try_to_migrate_one() Dev Jain
2026-07-02 15:34 ` David Hildenbrand (Arm)
2026-07-02 5:13 ` [PATCH v2 4/6] mm/migrate: use huge_ptep_get() in remove_migration_pte() Dev Jain
2026-07-02 15:44 ` David Hildenbrand (Arm)
2026-07-02 5:13 ` [PATCH v2 5/6] mm/page_vma_mapped: use huge_ptep_get() for hugetlb Dev Jain
2026-07-02 8:33 ` Muchun Song
2026-07-02 15:44 ` David Hildenbrand (Arm)
2026-07-02 5:13 ` [PATCH v2 6/6] mm/mprotect: " Dev Jain
2026-07-02 5:18 ` Dev Jain
2026-07-02 8:29 ` Muchun Song
2026-07-02 8:30 ` Muchun Song
2026-07-02 15:47 ` David Hildenbrand (Arm)
2026-07-03 5:30 ` Dev Jain
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=20260702051341.126509-2-dev.jain@arm.com \
--to=dev.jain@arm.com \
--cc=ak@linux.intel.com \
--cc=akpm@linux-foundation.org \
--cc=anshuman.khandual@arm.com \
--cc=apopple@nvidia.com \
--cc=byungchul@sk.com \
--cc=catalin.marinas@arm.com \
--cc=dave.hansen@intel.com \
--cc=david@kernel.org \
--cc=gourry@gourry.net \
--cc=harry@kernel.org \
--cc=j-nomura@ce.jp.nec.com \
--cc=jannh@google.com \
--cc=joshua.hahnjy@gmail.com \
--cc=jpoimboe@kernel.org \
--cc=kas@kernel.org \
--cc=lance.yang@linux.dev \
--cc=liam@infradead.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=ljs@kernel.org \
--cc=matthew.brost@intel.com \
--cc=mel@csn.ul.ie \
--cc=muchun.song@linux.dev \
--cc=nao.horiguchi@gmail.com \
--cc=osalvador@suse.de \
--cc=pfalcato@suse.de \
--cc=rakie.kim@sk.com \
--cc=rcampbell@nvidia.com \
--cc=riel@surriel.com \
--cc=ryan.roberts@arm.com \
--cc=stable@vger.kernel.org \
--cc=tglx@kernel.org \
--cc=vbabka@kernel.org \
--cc=will@kernel.org \
--cc=ying.huang@linux.alibaba.com \
--cc=ziy@nvidia.com \
/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.