forked from luck/tmp_suning_uos_patched
RDMA/rtrs-srv: Fix missing wr_cqe
[ Upstream commit 8537f2de6519945890a2b0f3739b23f32b5c0a89 ]
We had a few places wr_cqe is not set, which could lead to NULL pointer
deref or GPF in error case.
Fixes: 9cb8374804
("RDMA/rtrs: server: main functionality")
Link: https://lore.kernel.org/r/20201217141915.56989-14-jinpu.wang@cloud.ionos.com
Signed-off-by: Jack Wang <jinpu.wang@cloud.ionos.com>
Reviewed-by: Md Haris Iqbal <haris.iqbal@cloud.ionos.com>
Signed-off-by: Guoqing Jiang <guoqing.jiang@cloud.ionos.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
e393184841
commit
30b7b6b8da
|
@ -277,6 +277,7 @@ static int rdma_write_sg(struct rtrs_srv_op *id)
|
||||||
WARN_ON_ONCE(rkey != wr->rkey);
|
WARN_ON_ONCE(rkey != wr->rkey);
|
||||||
|
|
||||||
wr->wr.opcode = IB_WR_RDMA_WRITE;
|
wr->wr.opcode = IB_WR_RDMA_WRITE;
|
||||||
|
wr->wr.wr_cqe = &io_comp_cqe;
|
||||||
wr->wr.ex.imm_data = 0;
|
wr->wr.ex.imm_data = 0;
|
||||||
wr->wr.send_flags = 0;
|
wr->wr.send_flags = 0;
|
||||||
|
|
||||||
|
@ -304,6 +305,7 @@ static int rdma_write_sg(struct rtrs_srv_op *id)
|
||||||
inv_wr.sg_list = NULL;
|
inv_wr.sg_list = NULL;
|
||||||
inv_wr.num_sge = 0;
|
inv_wr.num_sge = 0;
|
||||||
inv_wr.opcode = IB_WR_SEND_WITH_INV;
|
inv_wr.opcode = IB_WR_SEND_WITH_INV;
|
||||||
|
inv_wr.wr_cqe = &io_comp_cqe;
|
||||||
inv_wr.send_flags = 0;
|
inv_wr.send_flags = 0;
|
||||||
inv_wr.ex.invalidate_rkey = rkey;
|
inv_wr.ex.invalidate_rkey = rkey;
|
||||||
}
|
}
|
||||||
|
@ -314,6 +316,7 @@ static int rdma_write_sg(struct rtrs_srv_op *id)
|
||||||
|
|
||||||
srv_mr = &sess->mrs[id->msg_id];
|
srv_mr = &sess->mrs[id->msg_id];
|
||||||
rwr.wr.opcode = IB_WR_REG_MR;
|
rwr.wr.opcode = IB_WR_REG_MR;
|
||||||
|
rwr.wr.wr_cqe = &local_reg_cqe;
|
||||||
rwr.wr.num_sge = 0;
|
rwr.wr.num_sge = 0;
|
||||||
rwr.mr = srv_mr->mr;
|
rwr.mr = srv_mr->mr;
|
||||||
rwr.wr.send_flags = 0;
|
rwr.wr.send_flags = 0;
|
||||||
|
@ -389,6 +392,7 @@ static int send_io_resp_imm(struct rtrs_srv_con *con, struct rtrs_srv_op *id,
|
||||||
|
|
||||||
if (need_inval) {
|
if (need_inval) {
|
||||||
if (likely(sg_cnt)) {
|
if (likely(sg_cnt)) {
|
||||||
|
inv_wr.wr_cqe = &io_comp_cqe;
|
||||||
inv_wr.sg_list = NULL;
|
inv_wr.sg_list = NULL;
|
||||||
inv_wr.num_sge = 0;
|
inv_wr.num_sge = 0;
|
||||||
inv_wr.opcode = IB_WR_SEND_WITH_INV;
|
inv_wr.opcode = IB_WR_SEND_WITH_INV;
|
||||||
|
@ -431,6 +435,7 @@ static int send_io_resp_imm(struct rtrs_srv_con *con, struct rtrs_srv_op *id,
|
||||||
srv_mr = &sess->mrs[id->msg_id];
|
srv_mr = &sess->mrs[id->msg_id];
|
||||||
rwr.wr.next = &imm_wr;
|
rwr.wr.next = &imm_wr;
|
||||||
rwr.wr.opcode = IB_WR_REG_MR;
|
rwr.wr.opcode = IB_WR_REG_MR;
|
||||||
|
rwr.wr.wr_cqe = &local_reg_cqe;
|
||||||
rwr.wr.num_sge = 0;
|
rwr.wr.num_sge = 0;
|
||||||
rwr.wr.send_flags = 0;
|
rwr.wr.send_flags = 0;
|
||||||
rwr.mr = srv_mr->mr;
|
rwr.mr = srv_mr->mr;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user