From: "Vlastimil Babka (SUSE)" <vbabka@kernel.org>
To: Karl Mehltretter <kmehltretter@gmail.com>,
Harry Yoo <harry@kernel.org>,
Andrew Morton <akpm@linux-foundation.org>
Cc: Hao Li <hao.li@linux.dev>, Christoph Lameter <cl@gentwo.org>,
David Rientjes <rientjes@google.com>,
Roman Gushchin <roman.gushchin@linux.dev>,
Shengming Hu <hu.shengming@zte.com.cn>,
linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] mm/slub: initialize the free pointer of the bootstrap kmem_cache_node
Date: Thu, 15 Oct 2026 18:47:14 +0200 [thread overview]
Message-ID: <ee35da8d-03b2-4a19-ae7f-c62c1103f0aa@kernel.org> (raw)
In-Reply-To: <20261010203906.93156-1-kmehltretter@gmail.com>
On 10/10/26 22:39, Karl Mehltretter wrote:
> With slub_debug=FZPU, validating kmem_cache_node reports
>
> BUG kmem_cache_node (Not tainted): Freepointer corrupt
> Object 0xffff888000140040 @offset=64 fp=0x5a5a5a5a5a5a5a5a
>
> and taints the kernel. Poisoning places the bootstrap object's free
> pointer outside the object, where check_object() checks it even while
> allocated.
>
> early_kmem_cache_node_alloc() previously took this object from a
> freelist with an initialized pointer. It now takes it from the slab
> iterator and builds the freelist only for the remaining objects,
> leaving its pointer filled with POISON_INUSE.
>
> Initialize the bootstrap object's free pointer to NULL.
>
> Fixes: dc795d4c0282 ("mm/slub: defer freelist construction until after bulk allocation from a new slab")
> Assisted-by: LLM
> Signed-off-by: Karl Mehltretter <kmehltretter@gmail.com>
Reviewed-by: Vlastimil Babka (SUSE) <vbabka@kernel.org>
> ---
> QEMU x86_64 and custom QEMU SH7785LCR model, slub_debug=FZPU:
> validation reports "Freepointer corrupt" before the fix, clean after.
>
> mm/slub.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/mm/slub.c b/mm/slub.c
> index 54ec125033571..9a20aa820bb0f 100644
> --- a/mm/slub.c
> +++ b/mm/slub.c
> @@ -7777,6 +7777,7 @@ static void early_kmem_cache_node_alloc(int node)
>
> n = next_slab_obj(kmem_cache_node, &iter);
> BUG_ON(!n);
> + set_freepointer(kmem_cache_node, n, NULL);
>
> slab->inuse = 1;
> build_slab_freelist(kmem_cache_node, slab, &iter);
next prev parent reply other threads:[~2026-10-15 16:47 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-10 20:39 [PATCH] mm/slub: initialize the free pointer of the bootstrap kmem_cache_node Karl Mehltretter
2026-10-15 16:18 ` Harry Yoo
2026-10-15 16:31 ` Harry Yoo (Meta)
2026-10-15 16:47 ` Vlastimil Babka (SUSE) [this message]
2026-10-16 1:24 ` hu.shengming
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=ee35da8d-03b2-4a19-ae7f-c62c1103f0aa@kernel.org \
--to=vbabka@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=cl@gentwo.org \
--cc=hao.li@linux.dev \
--cc=harry@kernel.org \
--cc=hu.shengming@zte.com.cn \
--cc=kmehltretter@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=rientjes@google.com \
--cc=roman.gushchin@linux.dev \
/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.