]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
dlm: fix dlm_recover_members refcount on error
authorAlexander Aring <aahringo@redhat.com>
Mon, 18 Nov 2024 16:01:49 +0000 (11:01 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 5 Dec 2024 12:53:28 +0000 (13:53 +0100)
[ Upstream commit 200b977ebbc313a59174ba971006a231b3533dc5 ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
fs/dlm/recoverd.c

index 34f4f9f49a6ce53acc1f71369dd547c48107578d..12272a8f6d75f33d6b9372e84dca88831acfe05a 100644 (file)
@@ -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);