tipc: call tipc_wait_for_connect only when dlen is not 0
authorXin Long <lucien.xin@gmail.com>
Sun, 15 Aug 2021 07:13:36 +0000 (03:13 -0400)
committerDavid S. Miller <davem@davemloft.net>
Mon, 16 Aug 2021 10:20:56 +0000 (11:20 +0100)
commit7387a72c5f84f0dfb57618f9e4770672c0d2e4c9
tree3ca21edcdb72a70655d927ce8714ad6be5ca4735
parent55c8fca1dae1fb0d11deaa21b65a647dedb1bc50
tipc: call tipc_wait_for_connect only when dlen is not 0

__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>
net/tipc/socket.c