RDMA/siw: Properly check send and receive CQ pointers
[ Upstream commit a568814a55a0e82bbc7c7b51333d0c38e8fb5520 ] The check for the NULL of pointer received from container_of() is incorrect by definition as it points to some offset from NULL. Change such check with proper NULL check of SIW QP attributes. Fixes: 303ae1cdfdf7 ("rdma/siw: application interface") Link: https://lore.kernel.org/r/a7535a82925f6f4c1f062abaa294f3ae6e54bdd2.1620560310.git.leonro@nvidia.com Signed-off-by: Leon Romanovsky <leonro@nvidia.com> Reviewed-by: Bernard Metzler <bmt@zurich.ibm.com> Signed-off-by: Jason Gunthorpe <jgg@nvidia.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
a036768488
commit
a19bb4c056
@ -314,7 +314,6 @@ struct ib_qp *siw_create_qp(struct ib_pd *pd,
|
||||
struct siw_ucontext *uctx =
|
||||
rdma_udata_to_drv_context(udata, struct siw_ucontext,
|
||||
base_ucontext);
|
||||
struct siw_cq *scq = NULL, *rcq = NULL;
|
||||
unsigned long flags;
|
||||
int num_sqe, num_rqe, rv = 0;
|
||||
|
||||
@ -353,10 +352,8 @@ struct ib_qp *siw_create_qp(struct ib_pd *pd,
|
||||
rv = -EINVAL;
|
||||
goto err_out;
|
||||
}
|
||||
scq = to_siw_cq(attrs->send_cq);
|
||||
rcq = to_siw_cq(attrs->recv_cq);
|
||||
|
||||
if (!scq || (!rcq && !attrs->srq)) {
|
||||
if (!attrs->send_cq || (!attrs->recv_cq && !attrs->srq)) {
|
||||
siw_dbg(base_dev, "send CQ or receive CQ invalid\n");
|
||||
rv = -EINVAL;
|
||||
goto err_out;
|
||||
@ -423,8 +420,8 @@ struct ib_qp *siw_create_qp(struct ib_pd *pd,
|
||||
}
|
||||
}
|
||||
qp->pd = pd;
|
||||
qp->scq = scq;
|
||||
qp->rcq = rcq;
|
||||
qp->scq = to_siw_cq(attrs->send_cq);
|
||||
qp->rcq = to_siw_cq(attrs->recv_cq);
|
||||
|
||||
if (attrs->srq) {
|
||||
/*
|
||||
|
Loading…
x
Reference in New Issue
Block a user