Re: [PATCH] slab: silence sparse warning with type-based partitioning

"Vlastimil Babka (SUSE)" <[email protected]> Tue, 21 Jul 2026 11:30:11 +0200
Newsgroups org.kernel.vger.linux-sparse,org.kernel.vger.linux-kernel,org.kvack.linux-mm
Message-ID <[email protected]>
On 7/21/26 11:19, Marco Elver wrote:
> Sparse does not know __builtin_infer_alloc_token() and complains:
> 
> 	sparse: sparse: undefined identifier '__builtin_infer_alloc_token'
> 
> Fix it by using a dummy variant of __kmalloc_token() if __CHECKER__ is
> defined.
> 
> Fixes: feb662d9168b ("slab: support for compiler-assisted type-based slab cache partitioning")
> Reported-by: kernel test robot <[email protected]>
> Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
> Signed-off-by: Marco Elver <[email protected]>

Added to slab/for-next-fixes, thanks!

> ---
>  include/linux/slab.h | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/include/linux/slab.h b/include/linux/slab.h
> index 51f03f18c9a7..7ffe152ce483 100644
> --- a/include/linux/slab.h
> +++ b/include/linux/slab.h
> @@ -505,8 +505,12 @@ typedef struct { unsigned long v; } kmalloc_token_t;
>  extern unsigned long random_kmalloc_seed;
>  #define __kmalloc_token(...) ((kmalloc_token_t){ .v = _CODE_LOCATION_ })
>  #elif defined(CONFIG_KMALLOC_PARTITION_TYPED)
> +#ifdef __CHECKER__
> +#define __kmalloc_token(...) ((kmalloc_token_t){ .v = 0 })
> +#else /* !__CHECKER__ */
>  #define __kmalloc_token(...) ((kmalloc_token_t){ .v = __builtin_infer_alloc_token(__VA_ARGS__) })
> -#endif
> +#endif /* __CHECKER__ */
> +#endif /* CONFIG_KMALLOC_PARTITION_TYPED */
>  #define DECL_TOKEN_PARAM(_token)	, kmalloc_token_t (_token)
>  #define _PASS_TOKEN_PARAM(_token)	, (_token)
>  #define PASS_TOKEN_PARAM(_token)	(_token)