diff options
author | Steve Wise <swise@opengridcomputing.com> | 2014-04-09 10:40:37 -0400 |
---|---|---|
committer | Roland Dreier <roland@purestorage.com> | 2014-04-11 14:36:10 -0400 |
commit | 1d1ca9b4fdde07325d263f7a75379527b1281f52 (patch) | |
tree | 06c17021c793df97431499caaf7ed1a296b04d97 | |
parent | 97df1c6736f660b58b408a60d0f7f65a64fb9d56 (diff) |
RDMA/cxgb4: Fix over-dereference when terminating
Need to get the endpoint reference before calling rdma_fini(), which
might fail causing us to not get the reference.
Signed-off-by: Steve Wise <swise@opengridcomputing.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
-rw-r--r-- | drivers/infiniband/hw/cxgb4/qp.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/infiniband/hw/cxgb4/qp.c b/drivers/infiniband/hw/cxgb4/qp.c index 5a7d368aa47a..7b5114cb486f 100644 --- a/drivers/infiniband/hw/cxgb4/qp.c +++ b/drivers/infiniband/hw/cxgb4/qp.c | |||
@@ -1389,6 +1389,7 @@ int c4iw_modify_qp(struct c4iw_dev *rhp, struct c4iw_qp *qhp, | |||
1389 | qhp->attr.ecode = attrs->ecode; | 1389 | qhp->attr.ecode = attrs->ecode; |
1390 | ep = qhp->ep; | 1390 | ep = qhp->ep; |
1391 | disconnect = 1; | 1391 | disconnect = 1; |
1392 | c4iw_get_ep(&qhp->ep->com); | ||
1392 | if (!internal) | 1393 | if (!internal) |
1393 | terminate = 1; | 1394 | terminate = 1; |
1394 | else { | 1395 | else { |
@@ -1396,7 +1397,6 @@ int c4iw_modify_qp(struct c4iw_dev *rhp, struct c4iw_qp *qhp, | |||
1396 | if (ret) | 1397 | if (ret) |
1397 | goto err; | 1398 | goto err; |
1398 | } | 1399 | } |
1399 | c4iw_get_ep(&qhp->ep->com); | ||
1400 | break; | 1400 | break; |
1401 | case C4IW_QP_STATE_ERROR: | 1401 | case C4IW_QP_STATE_ERROR: |
1402 | t4_set_wq_in_error(&qhp->wq); | 1402 | t4_set_wq_in_error(&qhp->wq); |