Message ID | 1562736764-31752-6-git-send-email-santosh.shilimkar@oracle.com |
---|---|
State | Accepted |
Delegated to: | David Miller |
Headers | show |
Series | [net,1/5] rds: fix reordering with composite message notification | expand |
On 2019/7/10 13:32, Santosh Shilimkar wrote: > Connections with legitimate tos values can get into usual connection > race. It can result in consumer reject. We don't want tos value or > protocol version to be demoted for such connections otherwise > piers would end up different tos values which can results in > no connection. Example a peer initiated connection with say > tos 8 while usual connection racing can get downgraded to tos 0 > which is not desirable. > > Patch fixes above issue introduced by commit > commit d021fabf525f ("rds: rdma: add consumer reject") > > Reported-by: Yanjun Zhu <yanjun.zhu@oracle.com> > Tested-by: Yanjun Zhu <yanjun.zhu@oracle.com> Thanks. I am OK with this. Zhu Yanjun > Signed-off-by: Santosh Shilimkar <santosh.shilimkar@oracle.com> > --- > net/rds/rdma_transport.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/net/rds/rdma_transport.c b/net/rds/rdma_transport.c > index 9db455d..ff74c4b 100644 > --- a/net/rds/rdma_transport.c > +++ b/net/rds/rdma_transport.c > @@ -117,8 +117,10 @@ static int rds_rdma_cm_event_handler_cmn(struct rdma_cm_id *cm_id, > ((*err) <= RDS_RDMA_REJ_INCOMPAT))) { > pr_warn("RDS/RDMA: conn <%pI6c, %pI6c> rejected, dropping connection\n", > &conn->c_laddr, &conn->c_faddr); > - conn->c_proposed_version = RDS_PROTOCOL_COMPAT_VERSION; > - conn->c_tos = 0; > + > + if (!conn->c_tos) > + conn->c_proposed_version = RDS_PROTOCOL_COMPAT_VERSION; > + > rds_conn_drop(conn); > } > rdsdebug("Connection rejected: %s\n",
diff --git a/net/rds/rdma_transport.c b/net/rds/rdma_transport.c index 9db455d..ff74c4b 100644 --- a/net/rds/rdma_transport.c +++ b/net/rds/rdma_transport.c @@ -117,8 +117,10 @@ static int rds_rdma_cm_event_handler_cmn(struct rdma_cm_id *cm_id, ((*err) <= RDS_RDMA_REJ_INCOMPAT))) { pr_warn("RDS/RDMA: conn <%pI6c, %pI6c> rejected, dropping connection\n", &conn->c_laddr, &conn->c_faddr); - conn->c_proposed_version = RDS_PROTOCOL_COMPAT_VERSION; - conn->c_tos = 0; + + if (!conn->c_tos) + conn->c_proposed_version = RDS_PROTOCOL_COMPAT_VERSION; + rds_conn_drop(conn); } rdsdebug("Connection rejected: %s\n",