From: Breno Leitao <leitao@debian.org>
To: mst@redhat.com
Cc: mst@redhat.com, Andrew Morton <akpm@linux-foundation.org>,
Vlastimil Babka <vbabka@kernel.org>,
david@kernel.org, Mike Rapoport <rppt@kernel.org>,
Suren Baghdasaryan <surenb@google.com>,
Michal Hocko <mhocko@suse.com>,
linux-mm@kvack.org, linux-next@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: BUG: mm: VM_BUG_ON_PAGE in post_alloc_hook() via __ClearPagePrezeroed() on compound pages
Date: Thu, 4 Jun 2026 03:59:06 -0700 [thread overview]
Message-ID: <aiFZeSKzb4HLfjFm@gmail.com> (raw)
Hi Michael,
Booting next-20260603 (a225caacc365) on arm64 with CONFIG_DEBUG_VM=y
panics in start_kernel() during kmem_cache_init():
page dumped because: VM_BUG_ON_PAGE(1 && PageCompound(page))
kernel BUG at ./include/linux/page-flags.h:682!
Internal error: Oops - BUG: 00000000f2000800 [#1] SMP
CPU: 0 UID: 0 PID: 0 Comm: swapper Not tainted 7.1.0-rc6-next-20260603
Hardware name: linux,dummy-virt (DT)
pc : post_alloc_hook+0x224/0x2b8
Call trace:
post_alloc_hook+0x224/0x2b8 (P)
get_page_from_freelist+0x18a4/0x1b18
__alloc_frozen_pages_noprof+0x1b0/0x2068
__alloc_pages_mpol+0x130/0x2d0
alloc_frozen_pages_noprof+0x64/0xe8
alloc_slab_page+0x88/0x140
new_slab+0x11c/0x680
___slab_alloc+0x18c/0x7f0
__kmalloc_noprof+0x534/0x938
do_kmem_cache_create+0x724/0x890
create_boot_cache+0xc8/0x148
create_kmalloc_cache+0x5c/0xc8
new_kmalloc_cache+0x274/0x438
create_kmalloc_caches+0x2c/0x88
kmem_cache_init+0x228/0x2e0
mm_core_init+0x74/0xa0
start_kernel+0x1cc/0x4d0
Bisected (by inspection) to:
504f40f6bda6 ("mm: page_reporting: skip redundant zeroing of host-zeroed
reported pages")
Reproducer:
- linux-next 20260603, arm64 defconfig + DEBUG_VM=y (any debug-heavy
config will do; mine also has PROVE_LOCKING/DEBUG_LOCK_ALLOC, but
those are not required to trip the BUG once an order>0 __GFP_COMP
allocation hits prep_new_page).
- Boot under qemu-system-aarch64 -M virt with earlycon enabled.
I've tested something like the following and I was able to boot the host:
--- a/include/linux/page-flags.h
+++ b/include/linux/page-flags.h
@@ -679,7 +679,7 @@ FOLIO_FLAG_FALSE(idle)
* PagePrezeroed() tracks pages known to be zero. The allocator
* uses this to skip redundant zeroing in post_alloc_hook().
*/
-__PAGEFLAG(Prezeroed, prezeroed, PF_NO_COMPOUND)
+__PAGEFLAG(Prezeroed, prezeroed, PF_ANY)
With that change the lockdep+DEBUG_VM kernel boots all the way through
SMP init and hands off to PID 1 on arm64.
Happy to test a follow-up patch if you'd prefer a different shape.
Thanks,
--breno
next reply other threads:[~2026-06-04 10:59 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-04 10:59 Breno Leitao [this message]
2026-06-04 23:05 ` BUG: mm: VM_BUG_ON_PAGE in post_alloc_hook() via __ClearPagePrezeroed() on compound pages Michael S. Tsirkin
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=aiFZeSKzb4HLfjFm@gmail.com \
--to=leitao@debian.org \
--cc=akpm@linux-foundation.org \
--cc=david@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-next@vger.kernel.org \
--cc=mhocko@suse.com \
--cc=mst@redhat.com \
--cc=rppt@kernel.org \
--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.