diff options
Diffstat (limited to 'drivers/infiniband/core/iwcm.c')
-rw-r--r-- | drivers/infiniband/core/iwcm.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/infiniband/core/iwcm.c b/drivers/infiniband/core/iwcm.c index 55d093a36ae..0f89909abce 100644 --- a/drivers/infiniband/core/iwcm.c +++ b/drivers/infiniband/core/iwcm.c | |||
@@ -40,6 +40,7 @@ | |||
40 | #include <linux/idr.h> | 40 | #include <linux/idr.h> |
41 | #include <linux/interrupt.h> | 41 | #include <linux/interrupt.h> |
42 | #include <linux/rbtree.h> | 42 | #include <linux/rbtree.h> |
43 | #include <linux/sched.h> | ||
43 | #include <linux/spinlock.h> | 44 | #include <linux/spinlock.h> |
44 | #include <linux/workqueue.h> | 45 | #include <linux/workqueue.h> |
45 | #include <linux/completion.h> | 46 | #include <linux/completion.h> |
@@ -362,7 +363,9 @@ static void destroy_cm_id(struct iw_cm_id *cm_id) | |||
362 | * In either case, must tell the provider to reject. | 363 | * In either case, must tell the provider to reject. |
363 | */ | 364 | */ |
364 | cm_id_priv->state = IW_CM_STATE_DESTROYING; | 365 | cm_id_priv->state = IW_CM_STATE_DESTROYING; |
366 | spin_unlock_irqrestore(&cm_id_priv->lock, flags); | ||
365 | cm_id->device->iwcm->reject(cm_id, NULL, 0); | 367 | cm_id->device->iwcm->reject(cm_id, NULL, 0); |
368 | spin_lock_irqsave(&cm_id_priv->lock, flags); | ||
366 | break; | 369 | break; |
367 | case IW_CM_STATE_CONN_SENT: | 370 | case IW_CM_STATE_CONN_SENT: |
368 | case IW_CM_STATE_DESTROYING: | 371 | case IW_CM_STATE_DESTROYING: |