diff mbox

fixing blocking rdma_connect call on failure

Message ID OFD1E009D6.AB14F4A6-ONC12577AC.00485D02-C12577AC.0050EF83@ch.ibm.com (mailing list archive)
State Accepted
Headers show

Commit Message

Animesh K Trivedi1 Sept. 28, 2010, 2:44 p.m. UTC
None
diff mbox

Patch

diff --git a/drivers/infiniband/core/iwcm.c
b/drivers/infiniband/core/iwcm.c
index bfead5b..2a1e9ae 100644
--- a/drivers/infiniband/core/iwcm.c
+++ b/drivers/infiniband/core/iwcm.c
@@ -506,6 +506,8 @@  int iw_cm_accept(struct iw_cm_id *cm_id,
      qp = cm_id->device->iwcm->get_qp(cm_id->device, iw_param->qpn);
      if (!qp) {
            spin_unlock_irqrestore(&cm_id_priv->lock, flags);
+           clear_bit(IWCM_F_CONNECT_WAIT, &cm_id_priv->flags);
+           wake_up_all(&cm_id_priv->connect_wait);
            return -EINVAL;
      }
      cm_id->device->iwcm->add_ref(qp);
@@ -565,6 +567,8 @@  int iw_cm_connect(struct iw_cm_id *cm_id, struct
iw_cm_conn_param *iw_param)
      qp = cm_id->device->iwcm->get_qp(cm_id->device, iw_param->qpn);
      if (!qp) {
            spin_unlock_irqrestore(&cm_id_priv->lock, flags);
+           clear_bit(IWCM_F_CONNECT_WAIT, &cm_id_priv->flags);
+           wake_up_all(&cm_id_priv->connect_wait);
            return -EINVAL;
      }