diff options
Diffstat (limited to 'net/tipc/node.c')
| -rw-r--r-- | net/tipc/node.c | 7 | 
1 files changed, 4 insertions, 3 deletions
| diff --git a/net/tipc/node.c b/net/tipc/node.c index 2dc4919ab23c..dd3b6dc17662 100644 --- a/net/tipc/node.c +++ b/net/tipc/node.c @@ -817,10 +817,10 @@ static void __tipc_node_link_down(struct tipc_node *n, int *bearer_id,  static void tipc_node_link_down(struct tipc_node *n, int bearer_id, bool delete)  {  	struct tipc_link_entry *le = &n->links[bearer_id]; +	struct tipc_media_addr *maddr = NULL;  	struct tipc_link *l = le->link; -	struct tipc_media_addr *maddr; -	struct sk_buff_head xmitq;  	int old_bearer_id = bearer_id; +	struct sk_buff_head xmitq;  	if (!l)  		return; @@ -844,7 +844,8 @@ static void tipc_node_link_down(struct tipc_node *n, int bearer_id, bool delete)  	tipc_node_write_unlock(n);  	if (delete)  		tipc_mon_remove_peer(n->net, n->addr, old_bearer_id); -	tipc_bearer_xmit(n->net, bearer_id, &xmitq, maddr); +	if (!skb_queue_empty(&xmitq)) +		tipc_bearer_xmit(n->net, bearer_id, &xmitq, maddr);  	tipc_sk_rcv(n->net, &le->inputq);  } |