This patch series ensures that the passive (accept) side of the TCP connection used for RDS-TCP is correctly synchronized with any concurrent active (connect) attempts for a given pair of peers.
Patch 1 in the series makes sure that the t_sock in struct rds_tcp_connection is only reset after any threads in rds_tcp_xmit have completed (otherwise a null-ptr deref may be encountered). Patch 2 synchronizes rds_tcp_accept_one() with the rds_tcp*connect() path. Sowmini Varadhan (2): RDS:TCP: Synchronize rds_tcp_accept_one with rds_send_xmit when resetting t_sock RDS: TCP: Synchrnozize accept() and connect() paths on t_conn_lock. net/rds/tcp.c | 3 +- net/rds/tcp.h | 4 +++ net/rds/tcp_connect.c | 8 +++++++ net/rds/tcp_listen.c | 54 ++++++++++++++++++++++++++++++++---------------- 4 files changed, 50 insertions(+), 19 deletions(-)