From: Andrew Morton Date: Wed, 9 Oct 2024 21:16:16 +0000 (-0700) Subject: bootmem-stop-using-page-index-fix X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=ba5e363e576455c0d411f951f10536f69218e885;p=users%2Fjedix%2Flinux-maple.git bootmem-stop-using-page-index-fix fix arch/x86/mm/init_64.c build with !CONFIG_HAVE_BOOTMEM_INFO_NODE Reported-by: kernel test robot Closes: https://lore.kernel.org/oe-kbuild-all/202410090311.eaqcL7IZ-lkp@intel.com/ Cc: "Matthew Wilcox (Oracle)" Cc: Arnd Bergmann Signed-off-by: Andrew Morton --- diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c index 4d5fde324136..50c7595f7228 100644 --- a/arch/x86/mm/init_64.c +++ b/arch/x86/mm/init_64.c @@ -985,21 +985,32 @@ int arch_add_memory(int nid, u64 start, u64 size, return add_pages(nid, start_pfn, nr_pages, params); } +static void free_reserved_pages(struct page *page, unsigned long nr_pages) +{ + while (nr_pages--) + free_reserved_page(page++); +} + static void __meminit free_pagetable(struct page *page, int order) { /* bootmem page has reserved flag */ if (PageReserved(page)) { - enum bootmem_type type = bootmem_type(page); unsigned long nr_pages = 1 << order; +#ifdef CONFIG_HAVE_BOOTMEM_INFO_NODE + enum bootmem_type type = bootmem_type(page); if (type == SECTION_INFO || type == MIX_SECTION_INFO) { while (nr_pages--) put_page_bootmem(page++); - } else - while (nr_pages--) - free_reserved_page(page++); - } else + } else { + free_reserved_pages(page, nr_pages); + } +#else + free_reserved_pages(page, nr_pages); +#endif + } else { free_pages((unsigned long)page_address(page), order); + } } static void __meminit free_hugepage_table(struct page *page,