From: Sowmini Varadhan <sowmini.varad...@oracle.com> Date: Sat, 2 May 2015 07:55:08 -0400
> When running RDS over TCP, the active (client) side connects to the > listening ("passive") side at the RDS_TCP_PORT. After the connection > is established, if the client side reboots (potentially without even > sending a FIN) the server still has a TCP socket in the Established > state. If the server-side now gets a new SYN comes from the client > with a different client port, TCP will create a new socket-pair, but > the RDS layer will incorrectly pull up the old rds_connection (which > is still associated with the stale t_sock and RDS socket state). > > This patch corrects this behavior by having rds_tcp_accept_one() > always create a new connection for an incoming TCP SYN. > The rds and tcp state associated with the old socket-pair is cleaned > up in rds_tcp_set_callbacks() (i.e., rds_conn_drop on the old > connection) > > Signed-off-by: Sowmini Varadhan <sowmini.varad...@oracle.com> I think adding 64K of data to this module just to solve this rare issue is excessive. Furthermore I don't see any locking protecting the hash table nor the RDS socket linkage into that table. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/