From: sashiko-bot@kernel.org
To: "Harry Yoo (Meta)" <harry@kernel.org>,
"Vlastimil Babka" <vbabka@kernel.org>,
"Andrew Morton" <akpm@linux-foundation.org>,
"Suren Baghdasaryan" <surenb@google.com>,
"Johannes Weiner" <hannes@cmpxchg.org>,
"Michal Hocko" <mhocko@kernel.org>,
"Shakeel Butt" <shakeel.butt@linux.dev>,
"Roman Gushchin" <roman.gushchin@linux.dev>
Cc: "Hao Li" <hao.li@linux.dev>, "Christoph Lameter" <cl@gentwo.org>,
"David Rientjes" <rientjes@google.com>,
"Muchun Song" <muchun.song@linux.dev>,
"Hao Ge" <hao.ge@linux.dev>, "Pedro Falcato" <pfalcato@suse.de>,
linux-mm@kvack.org, kernel-team@meta.com
Subject: Re: [PATCH slab/for-next 01/14] mm/slab: allow passing SLAB_MAY_ACCOUNT to kmem_cache_create()
Date: Thu, 22 Oct 2026 11:48:34 +0000 [thread overview]
Message-ID: <sashiko-outbox-181382@kernel.org> (raw)
In-Reply-To: <20261021-memalloc-prof-dont-waste-slabobj-ext-metadata-v1-1-096800aa3330@kernel.org>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] mm/slab: unhandled SLAB_MAY_ACCOUNT in create_unique_id() and nokmem path
--
commit 6d48a33523fd53d7ecd1bf1fa6ab70ec7126128f
Author: Harry Yoo (Meta) <harry@kernel.org>
mm/slab: allow passing SLAB_MAY_ACCOUNT to kmem_cache_create()
This commit adds SLAB_MAY_ACCOUNT to SLAB_CORE_FLAGS so callers of
kmem_cache_create() can explicitly specify SLAB_MAY_ACCOUNT for caches whose
objects may be allocated with __GFP_ACCOUNT.
> diff --git a/mm/slab.h b/mm/slab.h
> index e94ac63d10dc0..31783311e23ea 100644
> --- a/mm/slab.h
> +++ b/mm/slab.h
> @@ -472,7 +472,7 @@ void flush_rcu_sheaves_on_cache(struct kmem_cache *s);
> SLAB_CACHE_DMA32 | SLAB_PANIC | \
> SLAB_TYPESAFE_BY_RCU | SLAB_DEBUG_OBJECTS | \
> SLAB_NOLEAKTRACE | SLAB_RECLAIM_ACCOUNT | \
> - SLAB_TEMPORARY | SLAB_ACCOUNT | \
> + SLAB_TEMPORARY | SLAB_ACCOUNT | SLAB_MAY_ACCOUNT | \
> SLAB_NO_USER_FLAGS | SLAB_KMALLOC | SLAB_NO_MERGE)
>
> #define SLAB_DEBUG_FLAGS (SLAB_RED_ZONE | SLAB_POISON | SLAB_STORE_USER | \
[Severity: Medium]
When callers pass SLAB_MAY_ACCOUNT to kmem_cache_create(), could this cause a
sysfs kobject naming collision in create_unique_id() as well as unhandled
SLAB_MAY_ACCOUNT state when mem_cgroup_kmem_disabled() is true?
In mm/slab_common.c, SLAB_MAY_ACCOUNT is included in SLAB_MERGE_SAME:
#define SLAB_MERGE_SAME (SLAB_RECLAIM_ACCOUNT | SLAB_CACHE_DMA | \
SLAB_CACHE_DMA32 | SLAB_ACCOUNT | SLAB_MAY_ACCOUNT)
so find_mergeable() will not merge two aliasable caches of the same size if
only one of them has SLAB_MAY_ACCOUNT set.
However, in mm/slub.c, when do_kmem_cache_create() -> sysfs_slab_add() ->
create_unique_id() generates the sysfs identifier for an aliasable cache,
SLAB_MAY_ACCOUNT is not encoded into the name:
static char *create_unique_id(struct kmem_cache *s)
{
...
if (s->flags & SLAB_CACHE_DMA)
*p++ = 'd';
if (s->flags & SLAB_CACHE_DMA32)
*p++ = 'D';
if (s->flags & SLAB_RECLAIM_ACCOUNT)
*p++ = 'a';
if (s->flags & SLAB_CONSISTENCY_CHECKS)
*p++ = 'F';
if (s->flags & SLAB_ACCOUNT)
*p++ = 'A';
if (p != name + 1)
*p++ = '-';
p += snprintf(p, ID_STR_LENGTH - (p - name), "%07u", s->size);
Because create_unique_id() omits SLAB_MAY_ACCOUNT, two unmerged aliasable
caches of the same size that differ only in SLAB_MAY_ACCOUNT will produce the
same sysfs ID string, causing kobject_init_and_add() in sysfs_slab_add() to
fail with -EEXIST and trigger a sysfs_warn_dup() warning.
In addition, in mm/slab_common.c, __kmem_cache_create_args() currently does:
if (!mem_cgroup_kmem_disabled())
flags |= SLAB_MAY_ACCOUNT;
If mem_cgroup_kmem_disabled() is true (for example, with
cgroup.memory=nokmem) and a caller passes SLAB_MAY_ACCOUNT, the flag is not
cleared. That prevents find_mergeable() from merging the cache with caches
that lack SLAB_MAY_ACCOUNT (triggering the create_unique_id() collision
above), and causes cache_needs_objcg() in mm/slab.h:
static inline bool cache_needs_objcg(struct kmem_cache *cache)
{
return (cache->flags & SLAB_MAY_ACCOUNT);
}
to return true, reserving unused _objcg metadata space via
cache_obj_ext_size() and slab_obj_ext_size() when slab object extensions are
allocated.
Note that a later change in the series, commit 51cadd40978b ("mm/slab: do not
set SLAB_MAY_ACCOUNT for all caches"), clears SLAB_MAY_ACCOUNT in
__kmem_cache_create_args() when mem_cgroup_kmem_disabled() is true, but it
does not update create_unique_id(), where the sysfs ID collision will then
also occur on default boots once SLAB_MAY_ACCOUNT is no longer set on all
caches.
Should create_unique_id() encode SLAB_MAY_ACCOUNT, and should
__kmem_cache_create_args() strip SLAB_MAY_ACCOUNT when
mem_cgroup_kmem_disabled() is true here as well?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261021-memalloc-prof-dont-waste-slabobj-ext-metadata-v1-0-096800aa3330@kernel.org?part=1
next prev parent reply other threads:[~2026-10-22 11:48 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-21 11:46 [PATCH slab/for-next 00/14] mm/slab: mandate SLAB_MAY_ACCOUNT for __GFP_ACCOUNT allocations to avoid wasting memory for slab metadata Harry Yoo (Meta)
2026-10-21 11:46 ` [PATCH slab/for-next 01/14] mm/slab: allow passing SLAB_MAY_ACCOUNT to kmem_cache_create() Harry Yoo (Meta)
2026-10-22 11:48 ` sashiko-bot [this message]
2026-10-21 11:46 ` [PATCH slab/for-next 02/14] lib/maple_tree: specify SLAB_MAY_ACCOUNT for maple_node cache Harry Yoo (Meta)
2026-10-22 11:48 ` sashiko-bot
2026-10-21 11:46 ` [PATCH slab/for-next 03/14] lib/xarray: specify SLAB_MAY_ACCOUNT for radix_tree_node cache Harry Yoo (Meta)
2026-10-22 11:48 ` sashiko-bot
2026-10-21 11:46 ` [PATCH slab/for-next 04/14] fs/buffer: specify SLAB_MAY_ACCOUNT for buffer_head cache Harry Yoo (Meta)
2026-10-21 11:46 ` [PATCH slab/for-next 05/14] net: skbuff: specify SLAB_MAY_ACCOUNT for skbuff_head_cache Harry Yoo (Meta)
2026-10-21 19:19 ` Jakub Kicinski
2026-10-22 13:43 ` Harry Yoo
2026-10-23 17:56 ` Jakub Kicinski
2026-10-21 11:46 ` [PATCH slab/for-next 06/14] kernel/fork: specify SLAB_MAY_ACCOUNT for thread_stack cache Harry Yoo (Meta)
2026-10-21 11:46 ` [PATCH slab/for-next 07/14] arm64/mm: specify SLAB_MAY_ACCOUNT for pgd_cache Harry Yoo (Meta)
2026-10-21 11:46 ` [PATCH slab/for-next 08/14] powerpc/mm: specify SLAB_MAY_ACCOUNT for pgtable caches Harry Yoo (Meta)
2026-10-21 11:46 ` [PATCH slab/for-next 09/14] iommu: specify SLAB_MAY_ACCOUNT for slab-backed page table caches Harry Yoo (Meta)
2026-10-22 11:48 ` sashiko-bot
2026-10-21 11:46 ` [PATCH slab/for-next 10/14] fanotify: specify SLAB_MAY_ACCOUNT for event caches Harry Yoo (Meta)
2026-10-21 11:46 ` [PATCH slab/for-next 11/14] smack: specify SLAB_MAY_ACCOUNT for smack_rule cache Harry Yoo (Meta)
2026-10-21 16:59 ` Casey Schaufler
2026-10-21 18:48 ` Harry Yoo
2026-10-21 19:14 ` Casey Schaufler
2026-10-22 12:54 ` Harry Yoo
2026-10-22 11:48 ` sashiko-bot
2026-10-21 11:46 ` [PATCH slab/for-next 12/14] hostfs: specify SLAB_MAY_ACCOUNT for inode cache Harry Yoo (Meta)
2026-10-21 11:46 ` [PATCH slab/for-next 13/14] mm/memcontrol: do not allow charging objects without SLAB_MAY_ACCOUNT Harry Yoo (Meta)
2026-10-21 11:46 ` [PATCH slab/for-next 14/14] mm/slab: do not set SLAB_MAY_ACCOUNT for all caches Harry Yoo (Meta)
2026-10-22 11:48 ` sashiko-bot
2026-10-26 1:02 ` kernel test robot
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-181382@kernel.org \
--to=sashiko-bot@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=cl@gentwo.org \
--cc=hannes@cmpxchg.org \
--cc=hao.ge@linux.dev \
--cc=hao.li@linux.dev \
--cc=harry@kernel.org \
--cc=kernel-team@meta.com \
--cc=linux-mm@kvack.org \
--cc=mhocko@kernel.org \
--cc=muchun.song@linux.dev \
--cc=pfalcato@suse.de \
--cc=rientjes@google.com \
--cc=roman.gushchin@linux.dev \
--cc=sashiko-reviews@lists.linux.dev \
--cc=shakeel.butt@linux.dev \
--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.