Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8f4c765c authored by Christoph Lameter's avatar Christoph Lameter Committed by Pekka Enberg
Browse files

mm/sl[aou]b: Move freeing of kmem_cache structure to common code



The freeing action is basically the same in all slab allocators.
Move to the common kmem_cache_destroy() function.

Reviewed-by: default avatarGlauber Costa <glommer@parallels.com>
Reviewed-by: default avatarJoonsoo Kim <js1304@gmail.com>
Signed-off-by: default avatarChristoph Lameter <cl@linux.com>
Signed-off-by: default avatarPekka Enberg <penberg@kernel.org>
parent 9b030cb8
Loading
Loading
Loading
Loading
+0 −1
Original line number Original line Diff line number Diff line
@@ -2225,7 +2225,6 @@ void __kmem_cache_destroy(struct kmem_cache *cachep)
			kfree(l3);
			kfree(l3);
		}
		}
	}
	}
	kmem_cache_free(kmem_cache, cachep);
}
}




+1 −0
Original line number Original line Diff line number Diff line
@@ -154,6 +154,7 @@ void kmem_cache_destroy(struct kmem_cache *s)
				rcu_barrier();
				rcu_barrier();


			__kmem_cache_destroy(s);
			__kmem_cache_destroy(s);
			kmem_cache_free(kmem_cache, s);
		} else {
		} else {
			list_add(&s->list, &slab_caches);
			list_add(&s->list, &slab_caches);
			printk(KERN_ERR "kmem_cache_destroy %s: Slab cache still has objects\n",
			printk(KERN_ERR "kmem_cache_destroy %s: Slab cache still has objects\n",
+0 −2
Original line number Original line Diff line number Diff line
@@ -540,8 +540,6 @@ struct kmem_cache *__kmem_cache_create(const char *name, size_t size,


void __kmem_cache_destroy(struct kmem_cache *c)
void __kmem_cache_destroy(struct kmem_cache *c)
{
{
	kmemleak_free(c);
	slob_free(c, sizeof(struct kmem_cache));
}
}


void *kmem_cache_alloc_node(struct kmem_cache *c, gfp_t flags, int node)
void *kmem_cache_alloc_node(struct kmem_cache *c, gfp_t flags, int node)
+0 −2
Original line number Original line Diff line number Diff line
@@ -213,7 +213,6 @@ static inline int sysfs_slab_alias(struct kmem_cache *s, const char *p)
static inline void sysfs_slab_remove(struct kmem_cache *s)
static inline void sysfs_slab_remove(struct kmem_cache *s)
{
{
	kfree(s->name);
	kfree(s->name);
	kmem_cache_free(kmem_cache, s);
}
}


#endif
#endif
@@ -5206,7 +5205,6 @@ static void kmem_cache_release(struct kobject *kobj)
	struct kmem_cache *s = to_slab(kobj);
	struct kmem_cache *s = to_slab(kobj);


	kfree(s->name);
	kfree(s->name);
	kmem_cache_free(kmem_cache, s);
}
}


static const struct sysfs_ops slab_sysfs_ops = {
static const struct sysfs_ops slab_sysfs_ops = {