From 83c7a1e28f9b4aa3498fc25cda78441a8cca816d Mon Sep 17 00:00:00 2001 From: Chengchang Tang Date: Fri, 8 Dec 2023 10:00:31 +0800 Subject: [PATCH] libhns: Fix uninitialized qp attr when flush cqe [ Upstream commit 23c210471029f58ee486525790a9c3906ae11601 ] When flushing cqe, the state of qp needs to be modified. The incoming qp attr is not initialized, which may lead to undefined behavior. Fixes: e1726e934574 ("libhns: Support flush cqe for hip08 in user space") Signed-off-by: Chengchang Tang Signed-off-by: Junxian Huang Signed-off-by: Nicolas Morey --- 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 a75a83102..2d321f958 100644 --- a/providers/hns/hns_roce_u_hw_v2.c +++ b/providers/hns/hns_roce_u_hw_v2.c @@ -362,7 +362,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) { @@ -1257,8 +1257,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(ibvqp, ctx); @@ -1412,7 +1412,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(ibvqp, ctx); @@ -2545,7 +2545,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) {