--- mm/slub.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) Index: linux-2.6/mm/slub.c =================================================================== --- linux-2.6.orig/mm/slub.c 2009-09-03 10:14:51.000000000 -0500 +++ linux-2.6/mm/slub.c 2009-09-03 10:18:32.000000000 -0500 @@ -2594,9 +2594,9 @@ static inline int kmem_cache_close(struc */ void kmem_cache_destroy(struct kmem_cache *s) { - if (s->flags & SLAB_DESTROY_BY_RCU) - rcu_barrier(); down_write(&slub_lock); + /* Stop deferring frees so that we can immediately free structures */ + s->flags &= ~SLAB_DESTROY_BY_RCU; s->refcount--; if (!s->refcount) { list_del(&s->list);