The patch titled Subject: bootmem-stop-using-page-index-fix has been added to the -mm mm-unstable branch. Its filename is bootmem-stop-using-page-index-fix.patch This patch will shortly appear at https://git.kernel.org/pub/scm/linux/kernel/git/akpm/25-new.git/tree/patches/bootmem-stop-using-page-index-fix.patch This patch will later appear in the mm-unstable branch at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/process/submit-checklist.rst when testing your code *** The -mm tree is included into linux-next via the mm-everything branch at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm and is updated there every 2-3 working days ------------------------------------------------------ From: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> Subject: bootmem-stop-using-page-index-fix Date: Wed Oct 9 02:16:16 PM PDT 2024 fix arch/x86/mm/init_64.c build with !CONFIG_HAVE_BOOTMEM_INFO_NODE Reported-by: kernel test robot <lkp@xxxxxxxxx> Closes: https://lore.kernel.org/oe-kbuild-all/202410090311.eaqcL7IZ-lkp@xxxxxxxxx/ Cc: "Matthew Wilcox (Oracle)" <willy@xxxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- arch/x86/mm/init_64.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) --- a/arch/x86/mm/init_64.c~bootmem-stop-using-page-index-fix +++ a/arch/x86/mm/init_64.c @@ -985,21 +985,32 @@ int arch_add_memory(int nid, u64 start, 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, _ Patches currently in -mm which might be from akpm@xxxxxxxxxxxxxxxxxxxx are mm-enforce-a-minimal-stack-gap-even-against-inaccessible-vmas-fix.patch lib-alloc_tag_module_unload-must-wait-for-pending-kfree_rcu-calls-fix.patch mm-consolidate-common-checks-in-hugetlb_get_unmapped_area-fix.patch mm-memoryc-remove-stray-newline-at-top-of-file.patch bootmem-stop-using-page-index-fix.patch