Index: linux-2.6.21-rc6/mm/slub.c =================================================================== --- linux-2.6.21-rc6.orig/mm/slub.c 2007-04-12 09:38:45.000000000 -0700 +++ linux-2.6.21-rc6/mm/slub.c 2007-04-12 09:39:05.000000000 -0700 @@ -1822,9 +1822,8 @@ static int kmem_cache_close(struct kmem_ void kmem_cache_destroy(struct kmem_cache *s) { down_write(&slub_lock); - if (s->refcount) - s->refcount--; - else { + s->refcount--; + if (!s->refcount) { list_del(&s->list); if (kmem_cache_close(s)) WARN_ON(1);