Re: [PATCH 18/20] mm/slub: remove slab_alloc() and __kmem_cache_alloc_lru() wrappers

From: Vlastimil Babka
Date: Tue Nov 14 2023 - 15:31:12 EST


On 11/14/23 05:50, Kees Cook wrote:
> On Mon, Nov 13, 2023 at 08:13:59PM +0100, Vlastimil Babka wrote:
>> slab_alloc() is a thin wrapper around slab_alloc_node() with only one
>> caller. Replace with direct call of slab_alloc_node().
>> __kmem_cache_alloc_lru() itself is a thin wrapper with two callers,
>> so replace it with direct calls of slab_alloc_node() and
>> trace_kmem_cache_alloc().
>
> I'd have a sense that with 2 callers a wrapper is still useful?

Well it bothered me how many layers everything went through, it makes it
harder to comprehend the code.

>>
>> This also makes sure _RET_IP_ has always the expected value and not
>> depending on inlining decisions.

And there's also this argument. We should evaluate _RET_IP_ in
kmem_cache_alloc() and kmem_cache_alloc_lru().

>> Signed-off-by: Vlastimil Babka <vbabka@xxxxxxx>
>> [...]
>> void *kmem_cache_alloc_node(struct kmem_cache *s, gfp_t gfpflags, int node)
>> {
>> - void *ret = slab_alloc_node(s, NULL, gfpflags, node, _RET_IP_, s->object_size);
>> + void *ret = slab_alloc_node(s, NULL, gfpflags, node, _RET_IP_,
>> + s->object_size);
>>
>
> Whitespace change here isn't mentioned in the commit log.

OK, will mention.

> Regardless:
>
> Reviewed-by: Kees Cook <keescook@xxxxxxxxxxxx>

Thanks!