forked from luck/tmp_suning_uos_patched
tipc: call tipc_wait_for_connect only when dlen is not 0
commit 7387a72c5f84f0dfb57618f9e4770672c0d2e4c9 upstream. __tipc_sendmsg() is called to send SYN packet by either tipc_sendmsg() or tipc_connect(). The difference is in tipc_connect(), it will call tipc_wait_for_connect() after __tipc_sendmsg() to wait until connecting is done. So there's no need to wait in __tipc_sendmsg() for this case. This patch is to fix it by calling tipc_wait_for_connect() only when dlen is not 0 in __tipc_sendmsg(), which means it's called by tipc_connect(). Note this also fixes the failure in tipcutils/test/ptts/: # ./tipcTS & # ./tipcTC 9 (hang) Fixes: 36239dab6da7 ("tipc: fix implicit-connect for SYN+") Reported-by: Shuang Li <shuali@redhat.com> Signed-off-by: Xin Long <lucien.xin@gmail.com> Acked-by: Jon Maloy <jmaloy@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net> Cc: Paul Gortmaker <paul.gortmaker@windriver.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
ded6da217c
commit
0a178a0151
|
@ -1511,7 +1511,7 @@ static int __tipc_sendmsg(struct socket *sock, struct msghdr *m, size_t dlen)
|
|||
|
||||
if (unlikely(syn && !rc)) {
|
||||
tipc_set_sk_state(sk, TIPC_CONNECTING);
|
||||
if (timeout) {
|
||||
if (dlen && timeout) {
|
||||
timeout = msecs_to_jiffies(timeout);
|
||||
tipc_wait_for_connect(sock, &timeout);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user