On Wed, 24 Jul 2024 18:34:12 +0200 Jann Horn <jannh@xxxxxxxxxx> wrote: > Currently, when KASAN is combined with init-on-free behavior, the > initialization happens before KASAN's "invalid free" checks. > > More importantly, a subsequent commit will want to use the object metadata > region to store an rcu_head, and we should let KASAN check that the object > pointer is valid before that. (Otherwise that change will make the existing > testcase kmem_cache_invalid_free fail.) > > So add a new KASAN hook that allows KASAN to pre-validate a > kmem_cache_free() operation before SLUB actually starts modifying the > object or its metadata. I added this, to fix the CONFIG_KASAN=n build --- a/include/linux/kasan.h~kasan-catch-invalid-free-before-slub-reinitializes-the-object-fix +++ a/include/linux/kasan.h @@ -381,6 +381,12 @@ static inline void *kasan_init_slab_obj( { return (void *)object; } + +static inline bool kasan_slab_pre_free(struct kmem_cache *s, void *object) +{ + return false; +} + static inline bool kasan_slab_free(struct kmem_cache *s, void *object, bool init) { return false; _