aboutsummaryrefslogtreecommitdiffstats
path: root/net/tipc
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2015-06-14 02:56:52 -0400
committerDavid S. Miller <davem@davemloft.net>2015-06-14 02:56:52 -0400
commit25c43bf13b1657d9a2f6a2565e9159ce31517aa5 (patch)
treec1fef736d3227dbd3788206c746d00763247f232 /net/tipc
parenta2f0fad32b0d0022c7e5706d333d74a9579f3742 (diff)
parentc8d17b451aa18b07b60e771addf17a5fdd4138c7 (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Diffstat (limited to 'net/tipc')
-rw-r--r--net/tipc/socket.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/net/tipc/socket.c b/net/tipc/socket.c
index 30ea82a9b0f1..46b6ed534ef2 100644
--- a/net/tipc/socket.c
+++ b/net/tipc/socket.c
@@ -2140,11 +2140,17 @@ static void tipc_sk_timeout(unsigned long data)
2140 peer_node = tsk_peer_node(tsk); 2140 peer_node = tsk_peer_node(tsk);
2141 2141
2142 if (tsk->probing_state == TIPC_CONN_PROBING) { 2142 if (tsk->probing_state == TIPC_CONN_PROBING) {
2143 /* Previous probe not answered -> self abort */ 2143 if (!sock_owned_by_user(sk)) {
2144 skb = tipc_msg_create(TIPC_CRITICAL_IMPORTANCE, 2144 sk->sk_socket->state = SS_DISCONNECTING;
2145 TIPC_CONN_MSG, SHORT_H_SIZE, 0, 2145 tsk->connected = 0;
2146 own_node, peer_node, tsk->portid, 2146 tipc_node_remove_conn(sock_net(sk), tsk_peer_node(tsk),
2147 peer_port, TIPC_ERR_NO_PORT); 2147 tsk_peer_port(tsk));
2148 sk->sk_state_change(sk);
2149 } else {
2150 /* Try again later */
2151 sk_reset_timer(sk, &sk->sk_timer, (HZ / 20));
2152 }
2153
2148 } else { 2154 } else {
2149 skb = tipc_msg_create(CONN_MANAGER, CONN_PROBE, 2155 skb = tipc_msg_create(CONN_MANAGER, CONN_PROBE,
2150 INT_H_SIZE, 0, peer_node, own_node, 2156 INT_H_SIZE, 0, peer_node, own_node,