diff -drupN a/mm/slab_common.c b/mm/slab_common.c --- a/mm/slab_common.c 2018-08-06 17:23:04.000000000 +0300 +++ b/mm/slab_common.c 2022-06-12 05:28:14.000000000 +0300 @@ -458,6 +458,9 @@ EXPORT_SYMBOL(kmem_cache_create); static int shutdown_cache(struct kmem_cache *s, struct list_head *release, bool *need_rcu_barrier) { + /* free asan quarantined objects */ + kasan_cache_shutdown(s); + if (__kmem_cache_shutdown(s) != 0) return -EBUSY; @@ -741,7 +744,6 @@ void kmem_cache_destroy(struct kmem_cach get_online_cpus(); get_online_mems(); - kasan_cache_destroy(s); mutex_lock(&slab_mutex); s->refcount--;