aboutsummaryrefslogtreecommitdiff
path: root/sys/contrib/rdma
diff options
context:
space:
mode:
authorNavdeep Parhar <np@FreeBSD.org>2016-03-29 01:41:07 +0000
committerNavdeep Parhar <np@FreeBSD.org>2016-03-29 01:41:07 +0000
commitc0da2d161e8a7a82fab9f8dd17835a5117350099 (patch)
tree36df56f60be28f02a11dbaff517cb34d42fb7199 /sys/contrib/rdma
parent79bb86ac2ea6ad43a3ef0f185d28948e4c2ccd73 (diff)
downloadsrc-c0da2d161e8a7a82fab9f8dd17835a5117350099.tar.gz
src-c0da2d161e8a7a82fab9f8dd17835a5117350099.zip
krping wasn't designed to take more than one client. Fail any connect
requests if cb->state is not IDLE. Submitted by: Krishnamraju Eraparaju @ Chelsio Reviewed by: Steve Wise @ Open Grid Computing Sponsored by: Chelsio Communications
Notes
Notes: svn path=/head/; revision=297369
Diffstat (limited to 'sys/contrib/rdma')
-rw-r--r--sys/contrib/rdma/krping/krping.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/sys/contrib/rdma/krping/krping.c b/sys/contrib/rdma/krping/krping.c
index e99ff7f63773..3ad881eab6e8 100644
--- a/sys/contrib/rdma/krping/krping.c
+++ b/sys/contrib/rdma/krping/krping.c
@@ -266,8 +266,13 @@ static int krping_cma_event_handler(struct rdma_cm_id *cma_id,
break;
case RDMA_CM_EVENT_CONNECT_REQUEST:
- cb->state = CONNECT_REQUEST;
- cb->child_cm_id = cma_id;
+ if (cb->state == IDLE) {
+ cb->state = CONNECT_REQUEST;
+ cb->child_cm_id = cma_id;
+ } else {
+ PRINTF(cb, "Received connection request in wrong state"
+ " (%d)\n", cb->state);
+ }
DEBUG_LOG(cb, "child cma %p\n", cb->child_cm_id);
wake_up_interruptible(&cb->sem);
break;