Skip to content

Commit

Permalink
RDMA/restrack: Increment CQ restrack object before committing
Browse files Browse the repository at this point in the history
Once the uobj is committed it is immediately possible another thread
could destroy it, which worst case, can result in a use-after-free
of the restrack objects.

Cc: syzkaller <[email protected]>
Fixes: 08f294a ("RDMA/core: Add resource tracking for create and destroy CQs")
Reported-by: Noa Osherovich <[email protected]>
Signed-off-by: Leon Romanovsky <[email protected]>
Signed-off-by: Jason Gunthorpe <[email protected]>
  • Loading branch information
Leon Romanovsky authored and jgunthorpe committed Feb 15, 2018
1 parent 3f802b1 commit 0cba0ef
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions drivers/infiniband/core/uverbs_cmd.c
Original file line number Diff line number Diff line change
Expand Up @@ -1030,14 +1030,14 @@ static struct ib_ucq_object *create_cq(struct ib_uverbs_file *file,
resp.response_length = offsetof(typeof(resp), response_length) +
sizeof(resp.response_length);

cq->res.type = RDMA_RESTRACK_CQ;
rdma_restrack_add(&cq->res);

ret = cb(file, obj, &resp, ucore, context);
if (ret)
goto err_cb;

uobj_alloc_commit(&obj->uobject);
cq->res.type = RDMA_RESTRACK_CQ;
rdma_restrack_add(&cq->res);

return obj;

err_cb:
Expand Down

0 comments on commit 0cba0ef

Please sign in to comment.