From: Vishal Moola (Oracle) Date: Wed, 11 Jun 2025 00:12:53 +0000 (-0700) Subject: m68k: mm: Convert free_pointer_table() to use ptdescs X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5bea64689d9f96eff16438273b8576367aa7ba05;p=thirdparty%2Fkernel%2Flinux.git m68k: mm: Convert free_pointer_table() to use ptdescs Motorola uses free_pointer_table() for page tables, so it should be using struct ptdesc, not struct page. This helps us prepare to allocate ptdescs as their own memory descriptor, and prepares to remove a user of page->lru. Signed-off-by: "Vishal Moola (Oracle)" Reviewed-by: Geert Uytterhoeven Link: https://lore.kernel.org/20250611001255.527952-3-vishal.moola@gmail.com Signed-off-by: Geert Uytterhoeven --- diff --git a/arch/m68k/mm/motorola.c b/arch/m68k/mm/motorola.c index 8d54c1a7eaf58..6d655ef349b4b 100644 --- a/arch/m68k/mm/motorola.c +++ b/arch/m68k/mm/motorola.c @@ -202,21 +202,20 @@ int free_pointer_table(void *table, int type) { ptable_desc *dp; unsigned long ptable = (unsigned long)table; - unsigned long page = ptable & PAGE_MASK; - unsigned int mask = 1U << ((ptable - page)/ptable_size(type)); + unsigned long pt_addr = ptable & PAGE_MASK; + unsigned int mask = 1U << ((ptable - pt_addr)/ptable_size(type)); - dp = PD_PTABLE(page); + dp = PD_PTABLE(pt_addr); if (PD_MARKBITS (dp) & mask) panic ("table already free!"); PD_MARKBITS (dp) |= mask; if (PD_MARKBITS(dp) == ptable_mask(type)) { - /* all tables in page are free, free page */ + /* all tables in ptdesc are free, free ptdesc */ list_del(dp); - mmu_page_dtor((void *)page); - pagetable_dtor(virt_to_ptdesc((void *)page)); - free_page (page); + mmu_page_dtor((void *)pt_addr); + pagetable_dtor_free(virt_to_ptdesc((void *)pt_addr)); return 1; } else if (ptable_list[type].next != dp) { /*