From: Sowmini Varadhan Date: Wed, 31 May 2017 19:11:20 +0000 (-0700) Subject: rds: tcp: canonical connection order for all paths with index > 0 X-Git-Tag: v4.1.12-104.0.20170618_1145~213 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=411f45d3d00b20a29098c5763e61cabdb7d86cb4;p=users%2Fjedix%2Flinux-maple.git rds: tcp: canonical connection order for all paths with index > 0 The rds_connect_worker() has a bug in the check that enforces the canonical connection order described in the comments of rds_tcp_state_change(). The intention is to make sure that all the multipath connections are always initiated by the smaller IP address via rds_start_mprds. To achieve this, rds_connection_worker should check that cp_index > 0. Orabug: 26241322 (Cherry-pick of upstream 087d975353d0cc9b7536d6ef46cd9303fceb2e17) Signed-off-by: Sowmini Varadhan Acked-by: Santosh Shilimkar Signed-off-by: David S. Miller --- diff --git a/net/rds/threads.c b/net/rds/threads.c index e4ea0c4f74407..1e0ea785e4dbf 100644 --- a/net/rds/threads.c +++ b/net/rds/threads.c @@ -177,7 +177,7 @@ void rds_connect_worker(struct work_struct *work) int ret; bool is_tcp = conn->c_trans->t_type == RDS_TRANS_TCP; - if (is_tcp && cp->cp_index > 1 && + if (is_tcp && cp->cp_index > 0 && cp->cp_conn->c_laddr > cp->cp_conn->c_faddr) return; clear_bit(RDS_RECONNECT_PENDING, &cp->cp_flags);