diff options
author | Alexander Aring <aahringo@redhat.com> | 2024-11-18 11:01:49 -0500 |
---|---|---|
committer | David Teigland <teigland@redhat.com> | 2024-11-18 10:05:57 -0600 |
commit | 200b977ebbc313a59174ba971006a231b3533dc5 (patch) | |
tree | 21a0affec062a1bc5b252e26e1c366ac4611624f | |
parent | f74dacb4c81164d7578a11d5f8b660ad87059e6a (diff) | |
download | lwn-200b977ebbc313a59174ba971006a231b3533dc5.tar.gz lwn-200b977ebbc313a59174ba971006a231b3533dc5.zip |
dlm: fix dlm_recover_members refcount on error
If dlm_recover_members() fails we don't drop the references of the
previous created root_list that holds and keep all rsbs alive during the
recovery. It might be not an unlikely event because ping_members() could
run into an -EINTR if another recovery progress was triggered again.
Fixes: 3a747f4a2ee8 ("dlm: move rsb root_list to ls_recover() stack")
Signed-off-by: Alexander Aring <aahringo@redhat.com>
Signed-off-by: David Teigland <teigland@redhat.com>
-rw-r--r-- | fs/dlm/recoverd.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/dlm/recoverd.c b/fs/dlm/recoverd.c index 34f4f9f49a6c..12272a8f6d75 100644 --- a/fs/dlm/recoverd.c +++ b/fs/dlm/recoverd.c @@ -151,7 +151,7 @@ static int ls_recover(struct dlm_ls *ls, struct dlm_recover *rv) error = dlm_recover_members(ls, rv, &neg); if (error) { log_rinfo(ls, "dlm_recover_members error %d", error); - goto fail; + goto fail_root_list; } dlm_recover_dir_nodeid(ls, &root_list); |