]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
arm64/mm: Use generic __pud_free() helper in pud_free() implementation
authorArd Biesheuvel <ardb@kernel.org>
Fri, 1 Mar 2024 10:40:48 +0000 (11:40 +0100)
committerCatalin Marinas <catalin.marinas@arm.com>
Fri, 1 Mar 2024 15:25:45 +0000 (15:25 +0000)
Commit 0dd4f60a2c76 ("arm64: mm: Add support for folding PUDs at
runtime") implements specialized PUD alloc/free helpers to allow the
decision whether or not to fold PUDs to be made at runtime when the
number of paging levels is 4 or higher.

Its implementation of pud_free() is based on the generic version that
existed when the patch was first written, but in the meantime, the
freeing of a PUD has become a bit more involved, and so instead of
simply freeing the page, we should invoke the generic __pud_free() that
encapsulates whatever needs doing at this point.

This fixes a reported warning emitted by the page flags
self-diagnostics.

Reported-by: Ryan Roberts <ryan.roberts@arm.com>
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Tested-by: Ryan Roberts <ryan.roberts@arm.com>
Link: https://lore.kernel.org/r/20240301104046.1234309-5-ardb+git@google.com
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
arch/arm64/include/asm/pgalloc.h

index aeba2cf15a253ee1b1ac832b377d027c1a86f333..8ff5f2a2579e4d60a9883793ae3576897fd94261 100644 (file)
@@ -60,8 +60,7 @@ static inline void pud_free(struct mm_struct *mm, pud_t *pud)
 {
        if (!pgtable_l4_enabled())
                return;
-       BUG_ON((unsigned long)pud & (PAGE_SIZE-1));
-       free_page((unsigned long)pud);
+       __pud_free(mm, pud);
 }
 #else
 static inline void __p4d_populate(p4d_t *p4dp, phys_addr_t pudp, p4dval_t prot)