]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
dlm: init per node debugfs before add to node hash
authorAlexander Aring <aahringo@redhat.com>
Mon, 27 Apr 2026 15:59:35 +0000 (11:59 -0400)
committerDavid Teigland <teigland@redhat.com>
Fri, 8 May 2026 13:38:03 +0000 (08:38 -0500)
Avoiding potential issues when a node is added to the hash but the
debugfs is not NULL or IS_ERR() so a potential iteration over the hash
and debugfs_remove() will not fail like in dlm_midcomms_exit().

However dlm_midcomms_exit() will be called in module init/exit function
and the hash should be empty anyway at those stages. We change the
behavior as cleanup to avoid potential issues.

Reported-by: Ginger <ginger.jzllee@gmail.com>
Closes: https://lore.kernel.org/gfs2/CAGp+u1ZE7UsQ4sSUHBKQXU8x3M_jwK=ek1urSjEtd3jXQGFmVg@mail.gmail.com
Signed-off-by: Alexander Aring <aahringo@redhat.com>
Signed-off-by: David Teigland <teigland@redhat.com>
fs/dlm/midcomms.c

index 6b522d4e2b7e3a97b180f469038347a8f702eb7d..8964164600d2d7d81a76f259b1c0c4904c1e20b2 100644 (file)
@@ -356,6 +356,7 @@ int dlm_midcomms_addr(int nodeid, struct sockaddr_storage *addr)
        if (!node)
                return -ENOMEM;
 
+       node->debugfs = dlm_create_debug_comms_file(nodeid, node);
        node->nodeid = nodeid;
        spin_lock_init(&node->state_lock);
        spin_lock_init(&node->send_queue_lock);
@@ -369,7 +370,6 @@ int dlm_midcomms_addr(int nodeid, struct sockaddr_storage *addr)
        hlist_add_head_rcu(&node->hlist, &node_hash[r]);
        spin_unlock_bh(&nodes_lock);
 
-       node->debugfs = dlm_create_debug_comms_file(nodeid, node);
        return 0;
 }