The for() loop in rds_tcp_accept_one() assumes that the 0'th rds_tcp_conn_path is UP and starts multipath accepts at index 1. But this assumption may not always be true: if the 0'th path has failed (ERROR or DOWN state) an incoming connection request should be used to resurrect this path.
Signed-off-by: Sowmini Varadhan <sowmini.varad...@oracle.com> Acked-by: Santosh Shilimkar <santosh.shilim...@oracle.com> --- net/rds/tcp_listen.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/net/rds/tcp_listen.c b/net/rds/tcp_listen.c index e0b23fb..c9c4968 100644 --- a/net/rds/tcp_listen.c +++ b/net/rds/tcp_listen.c @@ -103,7 +103,7 @@ struct rds_tcp_connection *rds_tcp_accept_one_path(struct rds_connection *conn) if (!peer_is_smaller) return NULL; - for (i = 1; i < npaths; i++) { + for (i = 0; i < npaths; i++) { struct rds_conn_path *cp = &conn->c_path[i]; if (rds_conn_path_transition(cp, RDS_CONN_DOWN, -- 1.7.1