aboutsummaryrefslogtreecommitdiffstats
path: root/net/tipc/node.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/tipc/node.c')
-rw-r--r--net/tipc/node.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/net/tipc/node.c b/net/tipc/node.c
index 17e6378c4dfe..90cee4a6fce4 100644
--- a/net/tipc/node.c
+++ b/net/tipc/node.c
@@ -552,6 +552,7 @@ void tipc_node_unlock(struct tipc_node *node)
552 LIST_HEAD(conn_sks); 552 LIST_HEAD(conn_sks);
553 struct sk_buff_head waiting_sks; 553 struct sk_buff_head waiting_sks;
554 u32 addr = 0; 554 u32 addr = 0;
555 unsigned int flags = node->action_flags;
555 556
556 if (likely(!node->action_flags)) { 557 if (likely(!node->action_flags)) {
557 spin_unlock_bh(&node->lock); 558 spin_unlock_bh(&node->lock);
@@ -572,6 +573,7 @@ void tipc_node_unlock(struct tipc_node *node)
572 node->action_flags &= ~TIPC_NOTIFY_NODE_UP; 573 node->action_flags &= ~TIPC_NOTIFY_NODE_UP;
573 addr = node->addr; 574 addr = node->addr;
574 } 575 }
576 node->action_flags &= ~TIPC_WAKEUP_BCAST_USERS;
575 spin_unlock_bh(&node->lock); 577 spin_unlock_bh(&node->lock);
576 578
577 while (!skb_queue_empty(&waiting_sks)) 579 while (!skb_queue_empty(&waiting_sks))
@@ -583,6 +585,9 @@ void tipc_node_unlock(struct tipc_node *node)
583 if (!list_empty(&nsub_list)) 585 if (!list_empty(&nsub_list))
584 tipc_nodesub_notify(&nsub_list); 586 tipc_nodesub_notify(&nsub_list);
585 587
588 if (flags & TIPC_WAKEUP_BCAST_USERS)
589 tipc_bclink_wakeup_users();
590
586 if (addr) 591 if (addr)
587 tipc_named_node_up(addr); 592 tipc_named_node_up(addr);
588} 593}