Skip to content

Commit 118a571

Browse files
author
Mike Marciniszyn
committed
Fix rdmacm race
cm_open_server() does the synchronization send_mesg() prior to doing the listen. This sets up a race where the client can initiate a connection prior to having the listen having been done. Fix by moving the send_msg() call until after the rdma_listen(). Change-Id: I1d271c7d25801749a2ed138fadbf97efbbe51efd Reviewed-by: Estela, Henry R <henry.r.estela@intel.com> Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
1 parent 83bc16e commit 118a571

1 file changed

Lines changed: 2 additions & 1 deletion

File tree

src/rdma.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1874,10 +1874,11 @@ cm_open_server(DEVICE *dev)
18741874
error(0, "rdma_bind_addr failed");
18751875
port = ntohs(rdma_get_src_port(cm->id));
18761876
encode_uint32(&port, port);
1877-
send_mesg(&port, sizeof(port), "RDMA CM TCP IPv4 server port");
18781877

18791878
if (rdma_listen(cm->id, 0) != 0)
18801879
error(0, "rdma_listen failed");
1880+
send_mesg(&port, sizeof(port), "RDMA CM TCP IPv4 server port");
1881+
18811882
cm_expect_event(dev, RDMA_CM_EVENT_CONNECT_REQUEST);
18821883
cm->id = cm->event->id;
18831884
rd_create_qp(dev, cm->id->verbs, cm->id);

0 commit comments

Comments
 (0)