Re: [PATCH] block: skd: fix incorrect linux/slab_def.h inclusion

From: Jens Axboe
Date: Fri Feb 02 2018 - 10:08:19 EST


On 2/2/18 8:03 AM, Arnd Bergmann wrote:
> skd includes slab_def.h to get access to the slab cache object size.
> However, including this header breaks when we use SLUB or SLOB instead of
> the SLAB allocator, since the structure layout is completely different,
> as shown by this warning when we build this driver in one of the invalid
> configurations with link-time optimizations enabled:
>
> include/linux/slab.h:715:0: error: type of 'kmem_cache_size' does not match original declaration [-Werror=lto-type-mismatch]
> unsigned int kmem_cache_size(struct kmem_cache *s);
>
> mm/slab_common.c:77:14: note: 'kmem_cache_size' was previously declared here
> unsigned int kmem_cache_size(struct kmem_cache *s)
> ^
> mm/slab_common.c:77:14: note: code may be misoptimized unless -fno-strict-aliasing is used
> include/linux/slab.h:147:0: error: type of 'kmem_cache_destroy' does not match original declaration [-Werror=lto-type-mismatch]
> void kmem_cache_destroy(struct kmem_cache *);
>
> mm/slab_common.c:858:6: note: 'kmem_cache_destroy' was previously declared here
> void kmem_cache_destroy(struct kmem_cache *s)
> ^
> mm/slab_common.c:858:6: note: code may be misoptimized unless -fno-strict-aliasing is used
> include/linux/slab.h:140:0: error: type of 'kmem_cache_create' does not match original declaration [-Werror=lto-type-mismatch]
> struct kmem_cache *kmem_cache_create(const char *name, size_t size,
>
> mm/slab_common.c:534:1: note: 'kmem_cache_create' was previously declared here
> kmem_cache_create(const char *name, size_t size, size_t align,> ^
>
> This removes the header inclusion and instead uses the kmem_cache_size()
> interface to get the size in a reliable way.

Thanks Arnd, applied.

--
Jens Axboe