Re: [PATCH v3] mm/slub: fix missing debugfs entries for caches created before sysfs init

From: Vlastimil Babka (SUSE)

Date: Wed Jul 29 2026 - 12:30:34 EST


On 7/29/26 12:18, Li Xiasong wrote:
> slab_debugfs_init() creates the slab debugfs root at device initcall
> time, while slab_sysfs_init() moves slab_state to FULL at late initcall
> time. SLAB_STORE_USER caches created in this window miss their debugfs
> entries because do_kmem_cache_create() skips debugfs_slab_add() when
> slab_state <= UP. This was observed with MPTCP's request_sock_subflow_v6
> cache, whose slab debugfs directory was missing.
>
> The affected window is:
>
> slab_debugfs_init()
> slab_debugfs_root = debugfs_create_dir(...)
> list_for_each_entry(s, &slab_caches, list)
> debugfs_slab_add(s)
>
> kmem_cache_create(..., SLAB_STORE_USER, ...)
> do_kmem_cache_create()
> if (slab_state <= UP)
> return without debugfs entries
>
> slab_sysfs_init()
> slab_state = FULL
>
> Initialize the debugfs root and add debugfs entries while holding
> slab_mutex, walking slab_caches exactly once and handling both sysfs
> and debugfs entries in the same pass. This gives the sysfs and debugfs
> initialization an explicit order and prevents caches from being
> created between the debugfs scan and slab_state reaching FULL.
>
> Gate the new slab_late_init() on either sysfs or debugfs being enabled,
> with the slab_kset creation and alias_list processing factored into
> helpers that have empty no-sysfs variants, as suggested by Vlastimil
> Babka. On slab_kset_init() failure, slab_state stays below FULL so
> kmem_cache_create() keeps taking the early-boot path, matching prior
> behavior.
>
> Guard debugfs_slab_release() against an uninitialized debugfs root,
> since the root is now created later and a cache may be released before
> it exists.
>
> Fixes: 1a5ad30b89b4 ("mm: slub: make slab_sysfs_init() a late_initcall")
> Cc: stable@xxxxxxxxxxxxxxx
> Suggested-by: Vlastimil Babka <vbabka@xxxxxxxxxx>
> Signed-off-by: Li Xiasong <lixiasong1@xxxxxxxxxx>

Added to slab/for-next, thanks!