forked from Minki/linux
RDMA/rxe: Use the correct size of wqe when processing SRQ
The memcpy() that copies a WQE from a SRQ the QP uses an incorrect size.
The size should have been the size of the rxe_send_wqe struct not the size
of a pointer to it. The result is that IO operations using a SRQ on the
responder side will fail.
Fixes: ec0fa2445c
("RDMA/rxe: Fix over copying in get_srq_wqe")
Link: https://lore.kernel.org/r/20210729220039.18549-2-rpearsonhpe@gmail.com
Signed-off-by: Bob Pearson <rpearsonhpe@gmail.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
This commit is contained in:
parent
db4657afd1
commit
e2a05339fa
|
@ -318,7 +318,7 @@ static enum resp_states get_srq_wqe(struct rxe_qp *qp)
|
||||||
pr_warn("%s: invalid num_sge in SRQ entry\n", __func__);
|
pr_warn("%s: invalid num_sge in SRQ entry\n", __func__);
|
||||||
return RESPST_ERR_MALFORMED_WQE;
|
return RESPST_ERR_MALFORMED_WQE;
|
||||||
}
|
}
|
||||||
size = sizeof(wqe) + wqe->dma.num_sge*sizeof(struct rxe_sge);
|
size = sizeof(*wqe) + wqe->dma.num_sge*sizeof(struct rxe_sge);
|
||||||
memcpy(&qp->resp.srq_wqe, wqe, size);
|
memcpy(&qp->resp.srq_wqe, wqe, size);
|
||||||
|
|
||||||
qp->resp.wqe = &qp->resp.srq_wqe.wqe;
|
qp->resp.wqe = &qp->resp.srq_wqe.wqe;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user