This three part patchset fixes bugs in synchronization between rds_tcp_accept_one() and the rds-tcp send/recv path.
Patch 1 ensures that the lock_sock() is taken appropriately and the RDS datagram reassembly state is reset to synchronize with the receive path. Patch 2 ensures that partially sent RDS datagrams will get retransmitted after rds_tcp_accept_one() switches sockets. Patch 3 fixes a race window which would prematurely re-enable rds_send_xmit() before the rds_tcp_connection setup has been completed in rds_tcp_accept_one(). Sowmini Varadhan (3): RDS: TCP: Add/use rds_tcp_reset_callbacks to reset tcp socket safely RDS: TCP: Retransmit half-sent datagrams when switching sockets in rds_tcp_reset_callbacks RDS: TCP: fix race windows in send-path quiescence by rds_tcp_accept_one() net/rds/rds.h | 2 + net/rds/send.c | 1 + net/rds/tcp.c | 78 +++++++++++++++++++++++++++++++++++++++++++++++-- net/rds/tcp.h | 1 + net/rds/tcp_connect.c | 2 +- net/rds/tcp_listen.c | 20 ++++-------- net/rds/threads.c | 10 +++++- 7 files changed, 95 insertions(+), 19 deletions(-)