diff options
| -rw-r--r-- | mm/slub.c | 4 |
1 files changed, 2 insertions, 2 deletions
| @@ -2594,8 +2594,6 @@ static inline int kmem_cache_close(struct kmem_cache *s) | |||
| 2594 | */ | 2594 | */ |
| 2595 | void kmem_cache_destroy(struct kmem_cache *s) | 2595 | void kmem_cache_destroy(struct kmem_cache *s) |
| 2596 | { | 2596 | { |
| 2597 | if (s->flags & SLAB_DESTROY_BY_RCU) | ||
| 2598 | rcu_barrier(); | ||
| 2599 | down_write(&slub_lock); | 2597 | down_write(&slub_lock); |
| 2600 | s->refcount--; | 2598 | s->refcount--; |
| 2601 | if (!s->refcount) { | 2599 | if (!s->refcount) { |
| @@ -2606,6 +2604,8 @@ void kmem_cache_destroy(struct kmem_cache *s) | |||
| 2606 | "still has objects.\n", s->name, __func__); | 2604 | "still has objects.\n", s->name, __func__); |
| 2607 | dump_stack(); | 2605 | dump_stack(); |
| 2608 | } | 2606 | } |
| 2607 | if (s->flags & SLAB_DESTROY_BY_RCU) | ||
| 2608 | rcu_barrier(); | ||
| 2609 | sysfs_slab_remove(s); | 2609 | sysfs_slab_remove(s); |
| 2610 | } else | 2610 | } else |
| 2611 | up_write(&slub_lock); | 2611 | up_write(&slub_lock); |
