summaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/hw/cxgb4/qp.c
diff options
context:
space:
mode:
authorSteve Wise <swise@opengridcomputing.com>2011-05-10 07:06:22 +0200
committerRoland Dreier <roland@purestorage.com>2011-05-10 07:06:22 +0200
commit30c95c2d495c1c8d4d6a97bb9f4e4eacb91ba1d2 (patch)
treeace5f0f3da8d942bc894f8ad0fbc6ceddda1d64d /drivers/infiniband/hw/cxgb4/qp.c
parentLinux 2.6.39-rc7 (diff)
downloadlinux-30c95c2d495c1c8d4d6a97bb9f4e4eacb91ba1d2.tar.xz
linux-30c95c2d495c1c8d4d6a97bb9f4e4eacb91ba1d2.zip
RDMA/cxgb4: Don't change QP state outside EP lock
Concurrent ingress CLOSE and ULP ABORT operations causes a crash due to a race condition where the close path releases the EP lock and then tries to move the QP state to CLOSED. This must be done inside the EP lock to avoid the race. Signed-off-by: Steve Wise <swise@opengridcomputing.com> Signed-off-by: Roland Dreier <roland@purestorage.com>
Diffstat (limited to 'drivers/infiniband/hw/cxgb4/qp.c')
-rw-r--r--drivers/infiniband/hw/cxgb4/qp.c1
1 files changed, 0 insertions, 1 deletions
diff --git a/drivers/infiniband/hw/cxgb4/qp.c b/drivers/infiniband/hw/cxgb4/qp.c
index 70a5a3c646da..a1824a5f3d76 100644
--- a/drivers/infiniband/hw/cxgb4/qp.c
+++ b/drivers/infiniband/hw/cxgb4/qp.c
@@ -1210,7 +1210,6 @@ int c4iw_modify_qp(struct c4iw_dev *rhp, struct c4iw_qp *qhp,
if (ret) {
if (internal)
c4iw_get_ep(&qhp->ep->com);
- disconnect = abort = 1;
goto err;
}
break;