Messages in this thread Patch in this message | | | From | Xin Hao <> | Subject | [PATCH V2 1/1] mm/slub: release kobject if kobject_init_and_add failed in sysfs_slab_add | Date | Thu, 11 Aug 2022 15:18:44 +0800 |
| |
In kobject_init_and_add() function, the refcount is setted by calling kobject_init() function, regardless of whether the return value is zero or not, therefore, we must call kobject_del(&s->kobj) to prevent memory of s->kobj is leaked.
Signed-off-by: Xin Hao <xhao@linux.alibaba.com> --- mm/slub.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/mm/slub.c b/mm/slub.c index b1281b8654bd..940a3f52e07c 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -5981,19 +5981,18 @@ static int sysfs_slab_add(struct kmem_cache *s) err = sysfs_create_group(&s->kobj, &slab_attr_group); if (err) - goto out_del_kobj; + goto out; if (!unmergeable) { /* Setup first alias */ sysfs_slab_alias(s, s->name); } + return err; out: if (!unmergeable) kfree(name); + kobject_put(&s->kobj); return err; -out_del_kobj: - kobject_del(&s->kobj); - goto out; } void sysfs_slab_unlink(struct kmem_cache *s) -- 2.31.0
| |