diff options
Diffstat (limited to 'net/tipc/node.c')
-rw-r--r-- | net/tipc/node.c | 5 |
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 | } |