]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
RDS: TCP: Retransmit half-sent datagrams when switching sockets in rds_tcp_reset_call...
authorSowmini Varadhan <sowmini.varadhan@oracle.com>
Tue, 7 Jun 2016 17:37:28 +0000 (10:37 -0700)
committerSantosh Shilimkar <santosh.shilimkar@oracle.com>
Wed, 10 Aug 2016 23:04:31 +0000 (16:04 -0700)
Orabug: 23542064

Backport of upstream commit 0b6f760cff04 ("RDS: TCP: Retransmit half-sent
datagrams when switching sockets in rds_tcp_reset_callbacks")

When we switch a connection's sockets in rds_tcp_rest_callbacks,
any partially sent datagram must be retransmitted on the new
socket so that the receiver can correctly reassmble the RDS
datagram. Use rds_send_reset() which is designed for this purpose.

Signed-off-by: Sowmini Varadhan <sowmini.varadhan@oracle.com>
Acked-by: Santosh Shilimkar <santosh.shilimkar@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/rds/send.c
net/rds/tcp.c

index 245a3d7ea17e38eb7e16ea6b78ce359935bad827..462889d2b4683c41c91f0883d9a69585357a15e4 100644 (file)
@@ -147,6 +147,7 @@ void rds_send_reset(struct rds_connection *conn)
        }
        spin_unlock_irqrestore(&conn->c_lock, flags);
 }
+EXPORT_SYMBOL_GPL(rds_send_reset);
 
 static int acquire_in_xmit(struct rds_connection *conn)
 {
index 5e7b45643056ce88f952300cbcfaa20f77b0de9e..88ce595b0580daae5d376e8d2be9b63986f0b5e1 100644 (file)
@@ -172,6 +172,7 @@ void rds_tcp_reset_callbacks(struct socket *sock,
        release_sock(osock->sk);
        sock_release(osock);
 newsock:
+       rds_send_reset(conn);
        lock_sock(sock->sk);
        write_lock_bh(&sock->sk->sk_callback_lock);
        tc->t_sock = sock;