mm/sl[aou]b: Shrink __kmem_cache_create() parameter lists

Do the initial settings of the fields in common code. This will allow us
to push more processing into common code later and improve readability.

Signed-off-by: Christoph Lameter <cl@linux.com>
Signed-off-by: Pekka Enberg <penberg@kernel.org>
This commit is contained in:
Christoph Lameter
2012-09-04 23:18:33 +00:00
committed by Pekka Enberg
parent 278b1bb131
commit 8a13a4cc80
5 changed files with 68 additions and 81 deletions

View File

@@ -100,7 +100,6 @@ struct kmem_cache *kmem_cache_create(const char *name, size_t size, size_t align
{
struct kmem_cache *s = NULL;
int err = 0;
char *n;
get_online_cpus();
mutex_lock(&slab_mutex);
@@ -109,32 +108,33 @@ struct kmem_cache *kmem_cache_create(const char *name, size_t size, size_t align
goto out_locked;
n = kstrdup(name, GFP_KERNEL);
if (!n) {
err = -ENOMEM;
goto out_locked;
}
s = __kmem_cache_alias(name, size, align, flags, ctor);
if (s)
goto out_locked;
s = kmem_cache_zalloc(kmem_cache, GFP_KERNEL);
if (s) {
err = __kmem_cache_create(s, n, size, align, flags, ctor);
s->object_size = s->size = size;
s->align = align;
s->ctor = ctor;
s->name = kstrdup(name, GFP_KERNEL);
if (!s->name) {
kmem_cache_free(kmem_cache, s);
err = -ENOMEM;
goto out_locked;
}
err = __kmem_cache_create(s, flags);
if (!err)
list_add(&s->list, &slab_caches);
else {
kfree(n);
kfree(s->name);
kmem_cache_free(kmem_cache, s);
}
} else {
kfree(n);
} else
err = -ENOMEM;
}
out_locked:
mutex_unlock(&slab_mutex);