diff options
Diffstat (limited to 'drivers/infiniband/core')
-rw-r--r-- | drivers/infiniband/core/iwcm.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/infiniband/core/iwcm.c b/drivers/infiniband/core/iwcm.c index bfead5bc25f6..2a1e9ae134b4 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, | |||
506 | qp = cm_id->device->iwcm->get_qp(cm_id->device, iw_param->qpn); | 506 | qp = cm_id->device->iwcm->get_qp(cm_id->device, iw_param->qpn); |
507 | if (!qp) { | 507 | if (!qp) { |
508 | spin_unlock_irqrestore(&cm_id_priv->lock, flags); | 508 | spin_unlock_irqrestore(&cm_id_priv->lock, flags); |
509 | clear_bit(IWCM_F_CONNECT_WAIT, &cm_id_priv->flags); | ||
510 | wake_up_all(&cm_id_priv->connect_wait); | ||
509 | return -EINVAL; | 511 | return -EINVAL; |
510 | } | 512 | } |
511 | cm_id->device->iwcm->add_ref(qp); | 513 | 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) | |||
565 | qp = cm_id->device->iwcm->get_qp(cm_id->device, iw_param->qpn); | 567 | qp = cm_id->device->iwcm->get_qp(cm_id->device, iw_param->qpn); |
566 | if (!qp) { | 568 | if (!qp) { |
567 | spin_unlock_irqrestore(&cm_id_priv->lock, flags); | 569 | spin_unlock_irqrestore(&cm_id_priv->lock, flags); |
570 | clear_bit(IWCM_F_CONNECT_WAIT, &cm_id_priv->flags); | ||
571 | wake_up_all(&cm_id_priv->connect_wait); | ||
568 | return -EINVAL; | 572 | return -EINVAL; |
569 | } | 573 | } |
570 | cm_id->device->iwcm->add_ref(qp); | 574 | cm_id->device->iwcm->add_ref(qp); |