Re: [PATCH 08/10] kfence: Remove mention of PG_slab

Matthew Wilcox
2025-06-09T15:02:11Z

On Mon, Jun 09, 2025 at 03:33:41PM +0200, Vlastimil Babka wrote:
> On 6/7/25 00:22, Matthew Wilcox (Oracle) wrote:
> > Improve the documentation slightly, assuming I understood it correctly.
>
> Assuming I understood it correctly, this is going to be fun part of
> splitting struct slab from struct page. It gets __kfence_pool from memblock
> allocator and then makes the corresponding struct pages look like slab
> pages. Maybe it will be possible to simplify things so it won't have to
> allocate struct slab for each page...

I've been looking at this and I'm not sure I understand it correctly
either. Perhaps the kfence people can weigh in. It seems like the
kfence pages are being marked as slab pages, but not being assigned to
any particular slab cache?

Perhaps the right thing to do will be to allocate slabs for kfence
objects. Or kfence objects get their own memdesc type. It's hard to
say at this point. My plan was to disable kfence (along with almost
everything else) when CONFIG_PAGE_DIET is enabled, and then someone
who understands what's going on can come in and do the necessary to
re-enable it.

> > Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
> > ---
> > mm/kfence/core.c | 4 ++--
> > 1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/mm/kfence/core.c b/mm/kfence/core.c
> > index 102048821c22..0ed3be100963 100644
> > --- a/mm/kfence/core.c
> > +++ b/mm/kfence/core.c
> > @@ -605,8 +605,8 @@ static unsigned long kfence_init_pool(void)
> > pages = virt_to_page(__kfence_pool);
> >
> > /*
> > - * Set up object pages: they must have PG_slab set, to avoid freeing
> > - * these as real pages.
> > + * Set up object pages: they must have PGTY_slab set to avoid freeing
> > + * them as real pages.
> > *
> > * We also want to avoid inserting kfence_free() in the kfree()
> > * fast-path in SLUB, and therefore need to ensure kfree() correctly
>