]> git.openfabrics.org - ~ardavis/dapl.git/commitdiff
scm: add EP locking and cm checking to socket cm disconnect
authorArlin Davis <arlin.r.davis@intel.com>
Tue, 16 Mar 2010 22:18:06 +0000 (14:18 -0800)
committerArlin Davis <arlin.r.davis@intel.com>
Tue, 16 Mar 2010 22:18:06 +0000 (14:18 -0800)
Signed-off-by: Arlin Davis <arlin.r.davis@intel.com>
dapl/openib_scm/cm.c

index b6ffbe9cbc1935c1e3e2372874778d47d7527aef..afd0d936ce8e97547b83e6e92dc70a0bb709ed95 100644 (file)
@@ -1410,11 +1410,14 @@ dapls_ib_disconnect(IN DAPL_EP * ep_ptr, IN DAT_CLOSE_FLAGS close_flags)
 {
        dp_ib_cm_handle_t cm_ptr = dapl_get_cm_from_ep(ep_ptr);
 
+       dapl_os_lock(&ep_ptr->header.lock);
        if (ep_ptr->param.ep_state == DAT_EP_STATE_DISCONNECTED ||
-               ep_ptr->param.ep_attr.service_type != DAT_SERVICE_TYPE_RC) {
+           ep_ptr->param.ep_attr.service_type != DAT_SERVICE_TYPE_RC ||
+           cm_ptr == NULL) {
+               dapl_os_unlock(&ep_ptr->header.lock);
                return DAT_SUCCESS;
        } 
-       
+       dapl_os_unlock(&ep_ptr->header.lock);
        return (dapli_socket_disconnect(cm_ptr));
 }