When EP is UD mode, AH resolution is handled with DAT connection semantics
connect and accept. Since AH info can be resolved for the same EPs you can
get false duplicate requests because a previous CR from is still on the
CM processing list. The CM object should be removed. It will remain on the 
EP free list and not be freed until EP is destroyed given the possibility 
of consumer accessing CR private data buffer after CONN_EST event.

Signed-off-by: Arlin Davis <[email protected]>
---
 dapl/openib_ucm/cm.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/dapl/openib_ucm/cm.c b/dapl/openib_ucm/cm.c
index 36291fd..5b157fd 100644
--- a/dapl/openib_ucm/cm.c
+++ b/dapl/openib_ucm/cm.c
@@ -1186,6 +1186,7 @@ ud_bail:
                                (DAT_COUNT)ntohs(cm->msg.p_size),
                                (DAT_PVOID *)cm->msg.p_data,
                                (DAT_PVOID *)&xevent);
+               dapli_cm_free(cm); /* still attached to EP */
        } else
 #endif
        {
@@ -1358,6 +1359,7 @@ static void ucm_accept_rtu(dp_ib_cm_handle_t cm, 
ib_cm_msg_t *msg)
                                (DAT_COUNT)ntohs(cm->msg.p_size),
                                (DAT_PVOID *)cm->msg.p_data,
                                (DAT_PVOID *)&xevent);
+               dapli_cm_free(cm); /* still attached to EP */
        } else {
 #endif
                dapls_cr_callback(cm, IB_CME_CONNECTED, NULL, 0, cm->sp);
-- 
1.7.3



_______________________________________________
ofw mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ofw

Reply via email to