The first kmem_cache created at booting up is supposed neither mergeable nor destroyable but was possible to destroy. So prevent it.
Signed-off-by: Kyunghwan Kwon <k...@toanyone.net> --- mm/slab_common.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mm/slab_common.c b/mm/slab_common.c index 1dfc209..2d30ace 100644 --- a/mm/slab_common.c +++ b/mm/slab_common.c @@ -744,7 +744,7 @@ void kmem_cache_destroy(struct kmem_cache *s) bool need_rcu_barrier = false; int err; - if (unlikely(!s)) + if (unlikely(!s) || s->refcount == -1) return; get_online_cpus(); -- 2.9.3 (Apple Git-75)