Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1ea23a21 authored by Ying Xue's avatar Ying Xue Committed by David S. Miller
Browse files

tipc: unconditionally put sock refcnt when sock timer to be deleted is pending



As sock refcnt is taken when sock timer is started in
sk_reset_timer(), the sock refcnt should be put when sock timer
to be deleted is in pending state no matter what "probing_state"
value of tipc sock is.

Reviewed-by: default avatarErik Hugne <erik.hugne@ericsson.com>
Reviewed-by: default avatarJon Maloy <jon.maloy@ericsson.com>
Signed-off-by: default avatarYing Xue <ying.xue@windriver.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent f4fb874c
Loading
Loading
Loading
Loading
+2 −5
Original line number Diff line number Diff line
@@ -410,7 +410,7 @@ static int tipc_release(struct socket *sock)
	struct net *net;
	struct tipc_sock *tsk;
	struct sk_buff *skb;
	u32 dnode, probing_state;
	u32 dnode;

	/*
	 * Exit if socket isn't fully initialized (occurs when a failed accept()
@@ -448,10 +448,7 @@ static int tipc_release(struct socket *sock)
	}

	tipc_sk_withdraw(tsk, 0, NULL);
	probing_state = tsk->probing_state;
	if (del_timer_sync(&sk->sk_timer) &&
	    probing_state != TIPC_CONN_PROBING)
		sock_put(sk);
	sk_stop_timer(sk, &sk->sk_timer);
	tipc_sk_remove(tsk);
	if (tsk->connected) {
		skb = tipc_msg_create(TIPC_CRITICAL_IMPORTANCE,