RDMA/ocrdma: Make ocrdma_destroy_qp() easier to analyze
authorBart Van Assche <bart.vanassche@wdc.com>
Fri, 6 Jul 2018 20:04:30 +0000 (13:04 -0700)
committerJason Gunthorpe <jgg@mellanox.com>
Wed, 11 Jul 2018 18:12:57 +0000 (12:12 -0600)
This patch does not change any functionality but avoids that sparse
reports the following:

drivers/infiniband/hw/ocrdma/ocrdma_verbs.c:1818:31: warning: context imbalance in 'ocrdma_destroy_qp' - different lock contexts for basic block

Compile-tested only.

Signed-off-by: Bart Van Assche <bart.vanassche@wdc.com>
Cc: Selvin Xavier <selvin.xavier@broadcom.com>
Cc: Devesh Sharma <devesh.sharma@broadcom.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
drivers/infiniband/hw/ocrdma/ocrdma_verbs.c

index 9d0431e..86b22f6 100644 (file)
@@ -1774,13 +1774,13 @@ int ocrdma_destroy_qp(struct ib_qp *ibqp)
         * protect against proessing in-flight CQEs for this QP.
         */
        spin_lock_irqsave(&qp->sq_cq->cq_lock, flags);
-       if (qp->rq_cq && (qp->rq_cq != qp->sq_cq))
+       if (qp->rq_cq && (qp->rq_cq != qp->sq_cq)) {
                spin_lock(&qp->rq_cq->cq_lock);
-
-       ocrdma_del_qpn_map(dev, qp);
-
-       if (qp->rq_cq && (qp->rq_cq != qp->sq_cq))
+               ocrdma_del_qpn_map(dev, qp);
                spin_unlock(&qp->rq_cq->cq_lock);
+       } else {
+               ocrdma_del_qpn_map(dev, qp);
+       }
        spin_unlock_irqrestore(&qp->sq_cq->cq_lock, flags);
 
        if (!pd->uctx) {