]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - net/tipc/node.c
tipc: fix bug in multicast congestion handling
[karo-tx-linux.git] / net / tipc / node.c
index 17e6378c4dfe479790d085916cb5bfe40b445ae9..90cee4a6fce49450a0f83cca53fcf663ebea8148 100644 (file)
@@ -552,6 +552,7 @@ void tipc_node_unlock(struct tipc_node *node)
        LIST_HEAD(conn_sks);
        struct sk_buff_head waiting_sks;
        u32 addr = 0;
+       unsigned int flags = node->action_flags;
 
        if (likely(!node->action_flags)) {
                spin_unlock_bh(&node->lock);
@@ -572,6 +573,7 @@ void tipc_node_unlock(struct tipc_node *node)
                node->action_flags &= ~TIPC_NOTIFY_NODE_UP;
                addr = node->addr;
        }
+       node->action_flags &= ~TIPC_WAKEUP_BCAST_USERS;
        spin_unlock_bh(&node->lock);
 
        while (!skb_queue_empty(&waiting_sks))
@@ -583,6 +585,9 @@ void tipc_node_unlock(struct tipc_node *node)
        if (!list_empty(&nsub_list))
                tipc_nodesub_notify(&nsub_list);
 
+       if (flags & TIPC_WAKEUP_BCAST_USERS)
+               tipc_bclink_wakeup_users();
+
        if (addr)
                tipc_named_node_up(addr);
 }