From: sashiko-bot@kernel.org
To: "Muchun Song" <songmuchun@bytedance.com>,
"Andrew Morton" <akpm@linux-foundation.org>,
"David Hildenbrand" <david@kernel.org>,
"Oscar Salvador" <osalvador@suse.de>,
"Mike Rapoport" <rppt@kernel.org>
Cc: "Lorenzo Stoakes" <ljs@kernel.org>,
"Liam R . Howlett" <liam@infradead.org>,
"Vlastimil Babka" <vbabka@kernel.org>,
"Suren Baghdasaryan" <surenb@google.com>,
"Michal Hocko" <mhocko@suse.com>,
"Muchun Song" <muchun.song@linux.dev>,
"James Houghton" <jthoughton@google.com>,
"Lance Yang" <lance.yang@linux.dev>,
"Qi Zheng" <qi.zheng@linux.dev>,
linux-mm@kvack.org
Subject: Re: [PATCH 02/11] mm/mm_init: factor out common struct page initialization
Date: Mon, 09 Nov 2026 10:43:15 +0000 [thread overview]
Message-ID: <sashiko-outbox-204836@kernel.org> (raw)
In-Reply-To: <20261109095807.41547-3-songmuchun@bytedance.com>
Thank you for your contribution! Sashiko AI review found 1 potential
issue to consider:
- [High] mm/mm_init: __meminit on memmap_init_page_common() crashes at
runtime
--
commit bb3e83c26b241fd60613632a0fd50cc529ce8be7
Author: Muchun Song <muchun.song@linux.dev>
mm/mm_init: factor out common struct page initialization
This commit factors out PFN-independent struct page initialization into
memmap_init_page_common() and uses it in both __init_single_page() and
vmemmap_shared_tail_page().
> diff --git a/mm/mm_init.c b/mm/mm_init.c
> index 0129152b74d87..9677698f30d3a 100644
> --- a/mm/mm_init.c
> +++ b/mm/mm_init.c
> @@ -602,15 +602,28 @@ static inline void vmemmap_optimization_verify_zone(struct page *page)
> page_zone_id(page));
> }
>
> -void __meminit __init_single_page(struct page *page, unsigned long pfn,
> - unsigned long zone, int nid)
> +/* Initialize PFN-independent fields common to pages in the same zone. */
> +void __meminit memmap_init_page_common(struct page *page,
> + enum zone_type zone, int nid)
> {
> mm_zero_struct_page(page);
> - set_page_links(page, zone, nid, pfn);
> - init_page_count(page);
> - atomic_set(&page->_mapcount, -1);
> + set_page_zone(page, zone);
> + set_page_node(page, nid);
> page_cpupid_reset_last(page);
> page_kasan_tag_reset(page);
> + atomic_set(&page->_mapcount, -1);
> +#ifdef CONFIG_ZONE_DEVICE
> + if (zone == ZONE_DEVICE)
> + __SetPageReserved(page);
> +#endif
> +}
[ ... ]
> diff --git a/mm/sparse-vmemmap.c b/mm/sparse-vmemmap.c
> index 9b80dd7326f7e..fd869617423a3 100644
> --- a/mm/sparse-vmemmap.c
> +++ b/mm/sparse-vmemmap.c
> @@ -212,12 +212,7 @@ struct page __ref *vmemmap_shared_tail_page(unsigned int order, struct zone *zon
>
> for (int i = 0; i < PAGE_SIZE / sizeof(struct page); i++) {
> page = (struct page *)addr + i;
> - mm_zero_struct_page(page);
> - atomic_set(&page->_mapcount, -1);
> - set_page_node(page, zone_to_nid(zone));
> - set_page_zone(page, zone_idx(zone));
> - if (zone_is_zone_device(zone))
> - __SetPageReserved(page);
> + memmap_init_page_common(page, zone_idx(zone), zone_to_nid(zone));
> prep_compound_tail(page, NULL, order);
> }
[Severity: High]
Can vmemmap_shared_tail_page() call memmap_init_page_common() after
.init.text has been freed when CONFIG_MEMORY_HOTPLUG is disabled?
When !CONFIG_MEMORY_HOTPLUG, __meminit expands to __init, placing
memmap_init_page_common() in .init.text, while __ref on
vmemmap_shared_tail_page() suppresses the modpost section mismatch warning.
With CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP=y (which does not depend on
CONFIG_MEMORY_HOTPLUG), allocating HugeTLB pages at runtime reaches
vmemmap_optimize_pte() -> folio_vmemmap_shared_tail_page() ->
vmemmap_shared_tail_page() and executes freed .init.text the first time a
zone's shared tail page for that order is allocated after boot.
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261109095807.41547-1-songmuchun@bytedance.com?part=2
next prev parent reply other threads:[~2026-11-09 10:43 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-09 9:57 [PATCH 00/11] mm: Unify memmap initialization for compound pages Muchun Song
2026-11-09 9:57 ` [PATCH 01/11] mm/mm_init: verify zones for template-initialized pages Muchun Song
2026-11-12 16:18 ` Mike Rapoport
2026-11-09 9:57 ` [PATCH 02/11] mm/mm_init: factor out common struct page initialization Muchun Song
2026-11-09 10:43 ` sashiko-bot [this message]
2026-11-10 3:08 ` Muchun Song
2026-11-09 9:57 ` [PATCH 03/11] mm/mm_init: simplify zone device " Muchun Song
2026-11-09 9:57 ` [PATCH 04/11] mm/mm_init: factor out frozen compound " Muchun Song
2026-11-09 9:58 ` [PATCH 05/11] mm/hugetlb: drop boot-time HVO handling for gigantic folios Muchun Song
2026-11-09 10:43 ` sashiko-bot
2026-11-10 3:16 ` Muchun Song
2026-11-09 9:58 ` [PATCH 06/11] mm/hugetlb: initialize all struct pages for bootmem hugepages Muchun Song
2026-11-09 10:43 ` sashiko-bot
2026-11-10 3:23 ` Muchun Song
2026-11-09 9:58 ` [PATCH 07/11] mm/hugetlb: use common compound page initialization helper Muchun Song
2026-11-09 9:58 ` [PATCH 08/11] mm/mm_init: make __init_single_page() static Muchun Song
2026-11-09 9:58 ` [PATCH 09/11] mm/cma: centralize CMA pageblock initialization Muchun Song
2026-11-09 9:58 ` [PATCH 10/11] mm/cma: localize init_cma_pageblock() to cma.c Muchun Song
2026-11-09 9:58 ` [PATCH 11/11] mm/mm_init: move pageblock migratetype init to memmap helpers Muchun Song
2026-11-09 10:43 ` sashiko-bot
2026-11-10 3:55 ` Muchun Song
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=sashiko-outbox-204836@kernel.org \
--to=sashiko-bot@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=david@kernel.org \
--cc=jthoughton@google.com \
--cc=lance.yang@linux.dev \
--cc=liam@infradead.org \
--cc=linux-mm@kvack.org \
--cc=ljs@kernel.org \
--cc=mhocko@suse.com \
--cc=muchun.song@linux.dev \
--cc=osalvador@suse.de \
--cc=qi.zheng@linux.dev \
--cc=rppt@kernel.org \
--cc=sashiko-reviews@lists.linux.dev \
--cc=songmuchun@bytedance.com \
--cc=surenb@google.com \
--cc=vbabka@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.