mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-01 11:21:51 +00:00
dlm: Fix kobject memleak
Currently the error return path from kobject_init_and_add() is not
followed by a call to kobject_put() - which means we are leaking
the kobject.
Set do_unreg = 1 before kobject_init_and_add() to ensure that
kobject_put() can be called in its error patch.
Fixes: 901195ed7f
("Kobject: change GFS2 to use kobject_init_and_add")
Reported-by: Hulk Robot <hulkci@huawei.com>
Signed-off-by: Wang Hai <wanghai38@huawei.com>
Signed-off-by: David Teigland <teigland@redhat.com>
This commit is contained in:
parent
48778464bb
commit
0ffddafc3a
1 changed files with 3 additions and 3 deletions
|
@ -622,6 +622,9 @@ static int new_lockspace(const char *name, const char *cluster,
|
||||||
wait_event(ls->ls_recover_lock_wait,
|
wait_event(ls->ls_recover_lock_wait,
|
||||||
test_bit(LSFL_RECOVER_LOCK, &ls->ls_flags));
|
test_bit(LSFL_RECOVER_LOCK, &ls->ls_flags));
|
||||||
|
|
||||||
|
/* let kobject handle freeing of ls if there's an error */
|
||||||
|
do_unreg = 1;
|
||||||
|
|
||||||
ls->ls_kobj.kset = dlm_kset;
|
ls->ls_kobj.kset = dlm_kset;
|
||||||
error = kobject_init_and_add(&ls->ls_kobj, &dlm_ktype, NULL,
|
error = kobject_init_and_add(&ls->ls_kobj, &dlm_ktype, NULL,
|
||||||
"%s", ls->ls_name);
|
"%s", ls->ls_name);
|
||||||
|
@ -629,9 +632,6 @@ static int new_lockspace(const char *name, const char *cluster,
|
||||||
goto out_recoverd;
|
goto out_recoverd;
|
||||||
kobject_uevent(&ls->ls_kobj, KOBJ_ADD);
|
kobject_uevent(&ls->ls_kobj, KOBJ_ADD);
|
||||||
|
|
||||||
/* let kobject handle freeing of ls if there's an error */
|
|
||||||
do_unreg = 1;
|
|
||||||
|
|
||||||
/* This uevent triggers dlm_controld in userspace to add us to the
|
/* This uevent triggers dlm_controld in userspace to add us to the
|
||||||
group of nodes that are members of this lockspace (managed by the
|
group of nodes that are members of this lockspace (managed by the
|
||||||
cluster infrastructure.) Once it's done that, it tells us who the
|
cluster infrastructure.) Once it's done that, it tells us who the
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue