Re: [PATCH] slub: print just the function name in /sys/kernel/slab/*/ctor

"Vlastimil Babka (SUSE)" <[email protected]> Tue, 4 Aug 2026 19:25:15 +0200
Newsgroups org.kvack.linux-mm
Message-ID <[email protected]>
On 8/2/26 07:13, Harry Yoo wrote:
> On Thu, Jul 30, 2026 at 04:15:26PM +0200, Vlastimil Babka (SUSE) wrote:
>> On 7/27/26 07:27, Harry Yoo wrote:
>> > 
>> > 
>> > On 7/25/26 10:28 PM, Alexey Dobriyan wrote:
>> >> Sysfs "ctor" file prints offset/length of the cache's ctor function
>> >> 
>> >> 	$ sudo cat /sys/kernel/slab/bdev_cache/ctor
>> >> 	init_once+0x0/0x10
>> >> 
>> >> This is not useful:
>> >> 
>> >> Offset will always be 0 because ctor is a function.
>> >> 
>> >> I'm not sure what ctor function size is doing here, it should be in
>> >> /proc/kallsyms
>> >> 
>> >> Signed-off-by: Alexey Dobriyan <[email protected]>
>> >> ---
>> > 
>> > I'm not convinced that changing this (without strong justification)
>> > after exposing it to sysfs for 10+ years is worth the trouble.
>> 
>> Agreed. It's a pity this was exported in the first place. I can't see a
>> benefit for anyone knowing what the function is called. Should have been at
>> most a flag whether there's ctor or not.
> 
> Agreed.
> 
>> But possibly a justification is not to leak the function size, which might
>> be theoretically (although unlikely) a hint to some attack.
> 
> ...but you need to be the owner (root) to read this :P 
> 
>> Well at least if somebody complains about getting broken, it's trivial to
>> revert and we can hear about their usecase.
> 
> If we were to experiment with this, we'll change it to print a flag
> rather than the ctor's name, right?

Yep, let's try that. Alexey?

>> In-tree tools (slabinfo etc) were checked to work properly?
> 
> Looks like it doesn't read ctor at all.
> 
> Commit a87615b8f9e2 ("SLUB: slabinfo upgrade") added -o/--ops option
> that should "Display of ctor / dtor etc.", but it reads "ops" attribute
> that has never existed? Bit puzzled.

Might have been stale code from some previous revisions that included dtor.

>> >>  mm/slub.c |    2 +-
>> >>  1 file changed, 1 insertion(+), 1 deletion(-)
>> >> 
>> >> --- a/mm/slub.c
>> >> +++ b/mm/slub.c
>> >> @@ -9149,7 +9149,7 @@ static ssize_t ctor_show(struct kmem_cache *s, char *buf)
>> >>  {
>> >>  	if (!s->ctor)
>> >>  		return 0;
>> >> -	return sysfs_emit(buf, "%pS\n", s->ctor);
>> >> +	return sysfs_emit(buf, "%ps\n", s->ctor);
>> >>  }
>> >>  SLAB_ATTR_RO(ctor);
>