driver inclusion category: bugfix bugzilla: https://gitee.com/src-openeuler/rdma-core/issues/I8J2XW?from=project-issue
--------------------------------------------------------------------------
When flushing cqe, the state of qp needs to be modified. The incoming qp attr is not initialized, which may lead to undefined behavior.
Signed-off-by: Chengchang Tang tangchengchang@huawei.com --- providers/hns/hns_roce_u_hw_v2.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/providers/hns/hns_roce_u_hw_v2.c b/providers/hns/hns_roce_u_hw_v2.c index 9ac06b5..fc938de 100644 --- a/providers/hns/hns_roce_u_hw_v2.c +++ b/providers/hns/hns_roce_u_hw_v2.c @@ -405,7 +405,7 @@ static int hns_roce_u_v2_modify_qp(struct ibv_qp *qp, struct ibv_qp_attr *attr,
static int hns_roce_flush_cqe(struct hns_roce_qp *hr_qp, uint8_t status) { - struct ibv_qp_attr attr; + struct ibv_qp_attr attr = {}; int attr_mask;
if (status != HNS_ROCE_V2_CQE_WR_FLUSH_ERR) { @@ -1614,8 +1614,8 @@ int hns_roce_u_v2_post_send(struct ibv_qp *ibvqp, struct ibv_send_wr *wr, struct hns_roce_qp *qp = to_hr_qp(ibvqp); struct hns_roce_sge_info sge_info = {}; struct hns_roce_rc_sq_wqe *wqe; + struct ibv_qp_attr attr = {}; unsigned int wqe_idx, nreq; - struct ibv_qp_attr attr; int ret;
ret = check_qp_send(qp, ctx); @@ -1788,7 +1788,7 @@ static int hns_roce_u_v2_post_recv(struct ibv_qp *ibvqp, struct ibv_recv_wr *wr, struct hns_roce_context *ctx = to_hr_ctx(ibvqp->context); struct hns_roce_qp *qp = to_hr_qp(ibvqp); unsigned int wqe_idx, nreq, max_sge; - struct ibv_qp_attr attr; + struct ibv_qp_attr attr = {}; int ret;
ret = check_qp_recv(qp, ctx); @@ -3022,7 +3022,7 @@ static int wr_complete(struct ibv_qp_ex *ibv_qp) struct hns_roce_context *ctx = to_hr_ctx(ibv_qp->qp_base.context); struct hns_roce_qp *qp = to_hr_qp(&ibv_qp->qp_base); unsigned int nreq = qp->sq.head - qp->rb_sq_head; - struct ibv_qp_attr attr; + struct ibv_qp_attr attr = {}; int err = qp->err;
if (err) { -- 2.30.0