Commit b4ca1a3f authored by Jack Morgenstein's avatar Jack Morgenstein Committed by Roland Dreier

IB/uverbs: Fix reference counting on error paths

If an operation fails after incrementing an object's reference count,
then it should decrement the reference count on the error path.
Signed-off-by: default avatarJack Morgenstein <jackm@mellanox.co.il>
Signed-off-by: default avatarMichael S. Tsirkin <mst@mellanox.co.il>
Signed-off-by: default avatarRoland Dreier <rolandd@cisco.com>
parent 4de144bf
...@@ -489,6 +489,7 @@ err_idr: ...@@ -489,6 +489,7 @@ err_idr:
err_unreg: err_unreg:
ib_dereg_mr(mr); ib_dereg_mr(mr);
atomic_dec(&pd->usecnt);
err_up: err_up:
up(&ib_uverbs_idr_mutex); up(&ib_uverbs_idr_mutex);
...@@ -935,6 +936,11 @@ err_idr: ...@@ -935,6 +936,11 @@ err_idr:
err_destroy: err_destroy:
ib_destroy_qp(qp); ib_destroy_qp(qp);
atomic_dec(&pd->usecnt);
atomic_dec(&attr.send_cq->usecnt);
atomic_dec(&attr.recv_cq->usecnt);
if (attr.srq)
atomic_dec(&attr.srq->usecnt);
err_up: err_up:
up(&ib_uverbs_idr_mutex); up(&ib_uverbs_idr_mutex);
...@@ -1729,6 +1735,7 @@ err_idr: ...@@ -1729,6 +1735,7 @@ err_idr:
err_destroy: err_destroy:
ib_destroy_srq(srq); ib_destroy_srq(srq);
atomic_dec(&pd->usecnt);
err_up: err_up:
up(&ib_uverbs_idr_mutex); up(&ib_uverbs_idr_mutex);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment