tipc: correct usage of spin_lock() vs spin_lock_bh()
authorJon Paul Maloy <jon.maloy@ericsson.com>
Fri, 14 Feb 2014 21:40:44 +0000 (16:40 -0500)
committerDavid S. Miller <davem@davemloft.net>
Mon, 17 Feb 2014 05:26:34 +0000 (00:26 -0500)
I commit e099e86c9e24fe9aff36773600543eb31d8954d
("tipc: add node_lock protection to link lookup function")
we are calling spin_lock(&node->lock) directly instead of indirectly
via the tipc_node_lock(node) function. However, tipc_node_lock() is
using spin_lock_bh(), not spin_lock(), something leading to
unbalanced usage in one place, and a smatch warning.

We fix this by consistently using tipc_node_lock()/unlock() in
in the places touched by the mentioned commit.

Signed-off-by: Jon Maloy <jon.maloy@ericsson.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/tipc/link.c

index 4fb4ae0a75ed82d171aac3c78eda0f1a080e2f47..5422e96014e2053600046386b72c309018c49b08 100644 (file)
@@ -2410,7 +2410,7 @@ static struct tipc_node *tipc_link_find_owner(const char *link_name,
 
        *bearer_id = 0;
        list_for_each_entry_safe(n_ptr, tmp_n_ptr, &tipc_node_list, list) {
-               spin_lock(&n_ptr->lock);
+               tipc_node_lock(n_ptr);
                for (i = 0; i < MAX_BEARERS; i++) {
                        l_ptr = n_ptr->links[i];
                        if (l_ptr && !strcmp(l_ptr->name, link_name)) {
@@ -2419,7 +2419,7 @@ static struct tipc_node *tipc_link_find_owner(const char *link_name,
                                break;
                        }
                }
-               spin_unlock(&n_ptr->lock);
+               tipc_node_unlock(n_ptr);
                if (found_node)
                        break;
        }
@@ -2603,7 +2603,7 @@ struct sk_buff *tipc_link_cmd_reset_stats(const void *req_tlv_area, int req_tlv_
                read_unlock_bh(&tipc_net_lock);
                return tipc_cfg_reply_error_string("link not found");
        }
-       spin_lock(&node->lock);
+       tipc_node_lock(node);
        l_ptr = node->links[bearer_id];
        if (!l_ptr) {
                tipc_node_unlock(node);