|
@@ -5214,25 +5214,19 @@ static int sysfs_slab_add(struct kmem_cache *s)
|
|
|
|
|
|
s->kobj.kset = cache_kset(s);
|
|
|
err = kobject_init_and_add(&s->kobj, &slab_ktype, NULL, "%s", name);
|
|
|
- if (err) {
|
|
|
- kobject_put(&s->kobj);
|
|
|
- return err;
|
|
|
- }
|
|
|
+ if (err)
|
|
|
+ goto out_put_kobj;
|
|
|
|
|
|
err = sysfs_create_group(&s->kobj, &slab_attr_group);
|
|
|
- if (err) {
|
|
|
- kobject_del(&s->kobj);
|
|
|
- kobject_put(&s->kobj);
|
|
|
- return err;
|
|
|
- }
|
|
|
+ if (err)
|
|
|
+ goto out_del_kobj;
|
|
|
|
|
|
#ifdef CONFIG_MEMCG_KMEM
|
|
|
if (is_root_cache(s)) {
|
|
|
s->memcg_kset = kset_create_and_add("cgroup", NULL, &s->kobj);
|
|
|
if (!s->memcg_kset) {
|
|
|
- kobject_del(&s->kobj);
|
|
|
- kobject_put(&s->kobj);
|
|
|
- return -ENOMEM;
|
|
|
+ err = -ENOMEM;
|
|
|
+ goto out_del_kobj;
|
|
|
}
|
|
|
}
|
|
|
#endif
|
|
@@ -5241,9 +5235,16 @@ static int sysfs_slab_add(struct kmem_cache *s)
|
|
|
if (!unmergeable) {
|
|
|
/* Setup first alias */
|
|
|
sysfs_slab_alias(s, s->name);
|
|
|
- kfree(name);
|
|
|
}
|
|
|
- return 0;
|
|
|
+out:
|
|
|
+ if (!unmergeable)
|
|
|
+ kfree(name);
|
|
|
+ return err;
|
|
|
+out_del_kobj:
|
|
|
+ kobject_del(&s->kobj);
|
|
|
+out_put_kobj:
|
|
|
+ kobject_put(&s->kobj);
|
|
|
+ goto out;
|
|
|
}
|
|
|
|
|
|
static void sysfs_slab_remove(struct kmem_cache *s)
|