From: Peter Zijlstra peterz@infradead.org
mainline inclusion from mainline-5.8 commit c7bcbc8ab9cb20536b8f50c62a48cebda965fdba category: feature bugzilla: NA CVE:NA
--------------------------------
Geert reported that his SH7722-based Migo-R board failed to boot after commit:
c5b27a889da9 ("sh/tlb: Convert SH to generic mmu_gather")
That commit fell victim to copying the wrong pattern -- __pmd_free_tlb() used to be implemented with pmd_free().
Fixes: c5b27a889da9 ("sh/tlb: Convert SH to generic mmu_gather") Reported-by: Geert Uytterhoeven geert@linux-m68k.org Signed-off-by: Peter Zijlstra (Intel) peterz@infradead.org Reviewed-by: Geert Uytterhoeven geert+renesas@glider.be Tested-by: Geert Uytterhoeven geert+renesas@glider.be Signed-off-by: Rich Felker dalias@libc.org Signed-off-by: Chen Jun chenjun102@huawei.com
Conflicts: arch/sh/include/asm/pgalloc.h Reviewed-by: Hanjun Guo guohanjun@huawei.com
Signed-off-by: Yang Yingliang yangyingliang@huawei.com --- arch/sh/include/asm/pgalloc.h | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-)
diff --git a/arch/sh/include/asm/pgalloc.h b/arch/sh/include/asm/pgalloc.h index 69b65641cc93..b093b3b02788 100644 --- a/arch/sh/include/asm/pgalloc.h +++ b/arch/sh/include/asm/pgalloc.h @@ -14,6 +14,7 @@ extern void pgd_free(struct mm_struct *mm, pgd_t *pgd); extern void pud_populate(struct mm_struct *mm, pud_t *pudp, pmd_t *pmd); extern pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long address); extern void pmd_free(struct mm_struct *mm, pmd_t *pmd); +#define __pmd_free_tlb(tlb, pmdp, addr) pmd_free((tlb)->mm, (pmdp)) #endif
static inline void pmd_populate_kernel(struct mm_struct *mm, pmd_t *pmd, @@ -72,18 +73,4 @@ do { \ tlb_remove_page((tlb), (pte)); \ } while (0)
-#if CONFIG_PGTABLE_LEVELS > 2 -#define __pmd_free_tlb(tlb, pmdp, addr) \ -do { \ - struct page *page = virt_to_page(pmdp); \ - pgtable_pmd_page_dtor(page); \ - tlb_remove_page((tlb), page); \ -} while (0); -#endif - -static inline void check_pgt_cache(void) -{ - quicklist_trim(QUICK_PT, NULL, 25, 16); -} - #endif /* __ASM_SH_PGALLOC_H */