Re: [PATCH v3 06/13] mm/slab: abstract slabobj_ext.ref access
"Vlastimil Babka (SUSE)" <[email protected]> Tue, 28 Jul 2026 19:41:15 +0200
| Newsgroups | org.kernel.vger.cgroups,org.kernel.vger.linux-kernel,org.kvack.linux-mm |
|---|---|
| Message-ID | <[email protected]> |
On 7/28/26 15:41, Harry Yoo wrote: > On Mon, Jul 27, 2026 at 02:54:00PM +0200, Vlastimil Babka (SUSE) wrote: >> In preparation for changes to the structure, abstract access to the ref >> field with a slab_obj_ext_codetag_ref() function. Rename the field to >> _ctref to make an unexpected direct access a compile error. >> >> No functional change intended. >> >> Reviewed-by: Suren Baghdasaryan <[email protected]> >> Reviewed-by: Hao Li <[email protected]> >> Signed-off-by: Vlastimil Babka (SUSE) <[email protected]> >> --- > > Looks good to me, > Reviewed-by: Harry Yoo (Oracle) <[email protected]> > > With a suggestion: it would be nice to have debug warnings > that trigger when slab_obj_ext_codetag_ref() is compiled but > not supposed to be called. > > e.g.) for kfence objects, or later in the series when we > reduce slabobj_ext memory (!slab_obj_ext_has_codetag()) > > Similarly, it would be nice (later in the series) to have a warning > in slab_obj_ext_objcg() when slab_needs_objcg() returns false. OK good idea but we can't do it right now as the helpers are introduced later. So for 9/13 mm/slab: introduce slab_obj_ext_has_codetag(): diff --git a/mm/slab.h b/mm/slab.h index 8f352d9f4d91..fbad99da093c 100644 --- a/mm/slab.h +++ b/mm/slab.h @@ -726,6 +726,8 @@ static inline void slab_obj_ext_set_objcg(struct slabobj_ext *obj_ext, static inline union codetag_ref * slab_obj_ext_codetag_ref(struct slab *slab, struct slabobj_ext *obj_ext) { + VM_WARN_ON_ONCE(!slab_obj_ext_has_codetag()); + if (IS_ENABLED(CONFIG_MEMCG)) obj_ext += 1; ... and for objcg we would need to start passing slab pointer to slab_obj_ext_objcg() and slab_obj_ext_set_objcg(). Hmm... >> mm/slab.h | 10 +++++++++- >> mm/slub.c | 42 ++++++++++++++++++++++++++++-------------- >> 2 files changed, 37 insertions(+), 15 deletions(-)