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) | |||
| 830 | tipc_node_write_lock(n); | 830 | tipc_node_write_lock(n); |
| 831 | if (!tipc_link_is_establishing(l)) { | 831 | if (!tipc_link_is_establishing(l)) { |
| 832 | __tipc_node_link_down(n, &bearer_id, &xmitq, &maddr); | 832 | __tipc_node_link_down(n, &bearer_id, &xmitq, &maddr); |
| 833 | if (delete) { | ||
| 834 | kfree(l); | ||
| 835 | le->link = NULL; | ||
| 836 | n->link_cnt--; | ||
| 837 | } | ||
| 838 | } else { | 833 | } else { |
| 839 | /* Defuse pending tipc_node_link_up() */ | 834 | /* Defuse pending tipc_node_link_up() */ |
| 835 | tipc_link_reset(l); | ||
| 840 | tipc_link_fsm_evt(l, LINK_RESET_EVT); | 836 | tipc_link_fsm_evt(l, LINK_RESET_EVT); |
| 841 | } | 837 | } |
| 838 | if (delete) { | ||
| 839 | kfree(l); | ||
| 840 | le->link = NULL; | ||
| 841 | n->link_cnt--; | ||
| 842 | } | ||
| 842 | trace_tipc_node_link_down(n, true, "node link down or deleted!"); | 843 | trace_tipc_node_link_down(n, true, "node link down or deleted!"); |
| 843 | tipc_node_write_unlock(n); | 844 | tipc_node_write_unlock(n); |
| 844 | if (delete) | 845 | if (delete) |
