diff options
Diffstat (limited to 'mm/slub.c')
-rw-r--r-- | mm/slub.c | 13 |
1 files changed, 12 insertions, 1 deletions
@@ -3153,8 +3153,19 @@ int __kmem_cache_shutdown(struct kmem_cache *s) | |||
3153 | { | 3153 | { |
3154 | int rc = kmem_cache_close(s); | 3154 | int rc = kmem_cache_close(s); |
3155 | 3155 | ||
3156 | if (!rc) | 3156 | if (!rc) { |
3157 | /* | ||
3158 | * We do the same lock strategy around sysfs_slab_add, see | ||
3159 | * __kmem_cache_create. Because this is pretty much the last | ||
3160 | * operation we do and the lock will be released shortly after | ||
3161 | * that in slab_common.c, we could just move sysfs_slab_remove | ||
3162 | * to a later point in common code. We should do that when we | ||
3163 | * have a common sysfs framework for all allocators. | ||
3164 | */ | ||
3165 | mutex_unlock(&slab_mutex); | ||
3157 | sysfs_slab_remove(s); | 3166 | sysfs_slab_remove(s); |
3167 | mutex_lock(&slab_mutex); | ||
3168 | } | ||
3158 | 3169 | ||
3159 | return rc; | 3170 | return rc; |
3160 | } | 3171 | } |