> On Jan 18, 2017, at 7:54 AM, David Rientjes <rientjes@xxxxxxxxxx> wrote: > > On Tue, 17 Jan 2017, kwon wrote: > >>>> 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; >>> >>> Hello, Kyunghwan. >>> >>> Few lines below, s->refcount is checked. >>> >>> if (s->refcount) >>> goto unlock; >>> >>> Am I missing something? >>> >>> Thanks. >> >> Hello, Joonsoo. >> >> In case it is called the number of int size times. refcount would finally reach >> to 0 since decreased every time the function called. >> > > The only thing using create_boot_cache() should be the slab implementation > itself, so I don't think we need to protect ourselves from doing something > like kmem_cache_destroy(kmem_cache) or > kmem_cache_destroy(kmem_cache_node) even a single time. Agreed. I was aware of that though, I thought it would make its logic firm not giving performance disadvantages. Sorry for distraction. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href