]> www.infradead.org Git - users/willy/xarray.git/commitdiff
RDMA/vmw_pvrdma: Use refcount_dec_and_test to avoid warning
authorBryan Tan <bryantan@vmware.com>
Wed, 20 Dec 2017 17:50:01 +0000 (09:50 -0800)
committerJason Gunthorpe <jgg@mellanox.com>
Thu, 21 Dec 2017 23:06:07 +0000 (16:06 -0700)
refcount_dec generates a warning when the operation
causes the refcount to hit zero. Avoid this by using
refcount_dec_and_test.

Fixes: 8b10ba783c9d ("RDMA/vmw_pvrdma: Add shared receive queue support")
Reviewed-by: Adit Ranadive <aditr@vmware.com>
Reviewed-by: Aditya Sarwade <asarwade@vmware.com>
Reviewed-by: Jorgen Hansen <jhansen@vmware.com>
Signed-off-by: Bryan Tan <bryantan@vmware.com>
Reviewed-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
drivers/infiniband/hw/vmw_pvrdma/pvrdma_srq.c

index 826ccb864596dc19879211f9cdeefee47e536d5c..a2b1a3c115f21fd3714df88e19c4c570169f6ef2 100644 (file)
@@ -236,8 +236,8 @@ static void pvrdma_free_srq(struct pvrdma_dev *dev, struct pvrdma_srq *srq)
        dev->srq_tbl[srq->srq_handle] = NULL;
        spin_unlock_irqrestore(&dev->srq_tbl_lock, flags);
 
-       refcount_dec(&srq->refcnt);
-       wait_event(srq->wait, !refcount_read(&srq->refcnt));
+       if (!refcount_dec_and_test(&srq->refcnt))
+               wait_event(srq->wait, !refcount_read(&srq->refcnt));
 
        /* There is no support for kernel clients, so this is safe. */
        ib_umem_release(srq->umem);