diff --git a/mm/slub.c b/mm/slub.c
index 336be3224092e1226256f7a9e48bbd715911e131..527209d6327879187ec2ca301baf2b47046a085b 100644
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -5835,8 +5835,10 @@ static int sysfs_slab_add(struct kmem_cache *s)
 
 	s->kobj.kset = kset;
 	err = kobject_init_and_add(&s->kobj, &slab_ktype, NULL, "%s", name);
-	if (err)
+	if (err) {
+		kobject_put(&s->kobj);
 		goto out;
+	}
 
 	err = sysfs_create_group(&s->kobj, &slab_attr_group);
 	if (err)