dlm: fix dlm_recover_members refcount on error
authorAlexander Aring <aahringo@redhat.com>
Mon, 18 Nov 2024 16:01:49 +0000 (11:01 -0500)
committerDavid Teigland <teigland@redhat.com>
Mon, 18 Nov 2024 16:05:57 +0000 (10:05 -0600)
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>
fs/dlm/recoverd.c

index 34f4f9f..12272a8 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);