| From: Suren Baghdasaryan <surenb@google.com> |
| Subject: mm/slab: fix 'variable obj_exts set but not used' warning |
| Date: Fri, 14 Jun 2024 15:59:51 -0700 |
| |
| slab_post_alloc_hook() uses prepare_slab_obj_exts_hook() to obtain |
| slabobj_ext object. Currently the only user of slabobj_ext object in this |
| path is memory allocation profiling, therefore when it's not enabled this |
| object is not needed. This also generates a warning when compiling with |
| CONFIG_MEM_ALLOC_PROFILING=n. Move the code under this configuration to |
| fix the warning. If more slabobj_ext users appear in the future, the code |
| will have to be changed back to call prepare_slab_obj_exts_hook(). |
| |
| Link: https://lkml.kernel.org/r/20240614225951.3845577-1-surenb@google.com |
| Fixes: 4b8736964640 ("mm/slab: add allocation accounting into slab allocation and free paths") |
| Signed-off-by: Suren Baghdasaryan <surenb@google.com> |
| Reported-by: kernel test robot <lkp@intel.com> |
| Closes: https://lore.kernel.org/oe-kbuild-all/202406150444.F6neSaiy-lkp@intel.com/ |
| Cc: Kent Overstreet <kent.overstreet@linux.dev> |
| Cc: Kees Cook <keescook@chromium.org> |
| Cc: Vlastimil Babka <vbabka@suse.cz> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| --- |
| |
| mm/slub.c | 7 ++++--- |
| 1 file changed, 4 insertions(+), 3 deletions(-) |
| |
| --- a/mm/slub.c~mm-slab-fix-variable-obj_exts-set-but-not-used-warning |
| +++ a/mm/slub.c |
| @@ -3902,7 +3902,6 @@ bool slab_post_alloc_hook(struct kmem_ca |
| unsigned int orig_size) |
| { |
| unsigned int zero_size = s->object_size; |
| - struct slabobj_ext *obj_exts; |
| bool kasan_init = init; |
| size_t i; |
| gfp_t init_flags = flags & gfp_allowed_mask; |
| @@ -3945,9 +3944,11 @@ bool slab_post_alloc_hook(struct kmem_ca |
| kmemleak_alloc_recursive(p[i], s->object_size, 1, |
| s->flags, init_flags); |
| kmsan_slab_alloc(s, p[i], init_flags); |
| +#ifdef CONFIG_MEM_ALLOC_PROFILING |
| if (need_slab_obj_ext()) { |
| + struct slabobj_ext *obj_exts; |
| + |
| obj_exts = prepare_slab_obj_exts_hook(s, flags, p[i]); |
| -#ifdef CONFIG_MEM_ALLOC_PROFILING |
| /* |
| * Currently obj_exts is used only for allocation profiling. |
| * If other users appear then mem_alloc_profiling_enabled() |
| @@ -3955,8 +3956,8 @@ bool slab_post_alloc_hook(struct kmem_ca |
| */ |
| if (likely(obj_exts)) |
| alloc_tag_add(&obj_exts->ref, current->alloc_tag, s->size); |
| -#endif |
| } |
| +#endif |
| } |
| |
| return memcg_slab_post_alloc_hook(s, lru, flags, size, p); |
| _ |