diff options
Diffstat (limited to 'net/tipc/node.c')
| -rw-r--r-- | net/tipc/node.c | 11 | 
1 files changed, 6 insertions, 5 deletions
diff --git a/net/tipc/node.c b/net/tipc/node.c index db2a6c3e0be9..2dc4919ab23c 100644 --- a/net/tipc/node.c +++ b/net/tipc/node.c @@ -830,15 +830,16 @@ static void tipc_node_link_down(struct tipc_node *n, int bearer_id, bool delete)  	tipc_node_write_lock(n);  	if (!tipc_link_is_establishing(l)) {  		__tipc_node_link_down(n, &bearer_id, &xmitq, &maddr); -		if (delete) { -			kfree(l); -			le->link = NULL; -			n->link_cnt--; -		}  	} else {  		/* Defuse pending tipc_node_link_up() */ +		tipc_link_reset(l);  		tipc_link_fsm_evt(l, LINK_RESET_EVT);  	} +	if (delete) { +		kfree(l); +		le->link = NULL; +		n->link_cnt--; +	}  	trace_tipc_node_link_down(n, true, "node link down or deleted!");  	tipc_node_write_unlock(n);  	if (delete)  |