aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorZhenhua Huang <quic_zhenhuah@quicinc.com>2025-01-02 15:40:47 +0800
committerWill Deacon <will@kernel.org>2025-01-07 16:51:42 +0000
commit9ab2601dc4c145279dc518bca00349dc1abe77ed (patch)
tree73162f64424d0f4ba28b6d02e125a13f93b13db5
parentarm64/mm: Replace open encodings with PXD_TABLE_BIT (diff)
downloadwireguard-linux-9ab2601dc4c145279dc518bca00349dc1abe77ed.tar.xz
wireguard-linux-9ab2601dc4c145279dc518bca00349dc1abe77ed.zip
arm64: mm: Test for pmd_sect() in vmemmap_check_pmd()
Commit 2045a3b8911b ("mm/sparse-vmemmap: generalise vmemmap_populate_hugepages()") introduces the vmemmap_check_pmd() while does not verify if the entry is a section mapping, as is already done for Loongarch & X86. The update includes a check for pmd_sect(). Only if pmd_sect() returns true, further vmemmap population for the addr is skipped. Signed-off-by: Zhenhua Huang <quic_zhenhuah@quicinc.com> Reviewed-by: Anshuman Khandual <anshuman.khandual@arm.com> Link: https://lore.kernel.org/r/20250102074047.674156-1-quic_zhenhuah@quicinc.com Signed-off-by: Will Deacon <will@kernel.org>
-rw-r--r--arch/arm64/mm/mmu.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c
index e2739b69e11b..b4df5bc5b1b8 100644
--- a/arch/arm64/mm/mmu.c
+++ b/arch/arm64/mm/mmu.c
@@ -1169,7 +1169,8 @@ int __meminit vmemmap_check_pmd(pmd_t *pmdp, int node,
unsigned long addr, unsigned long next)
{
vmemmap_verify((pte_t *)pmdp, node, addr, next);
- return 1;
+
+ return pmd_sect(READ_ONCE(*pmdp));
}
int __meminit vmemmap_populate(unsigned long start, unsigned long end, int node,