From acd954b18ca6075ae13f7a10f65bcf7eb9ac107e Mon Sep 17 00:00:00 2001 From: Yuyu Li Date: Mon, 25 Nov 2024 16:13:48 +0800 Subject: [PATCH] libhns: Fix coredump during QP destruction when send_cq == recv_cq driver inclusion category: feature bugzilla: https://gitee.com/src-openeuler/rdma-core/issues/IB7JZL ------------------------------------------------------------------ If the specified send CQ and recv CQ are both the same CQ, the QP node in SCQ is not deleted. which causes a segfault to occur when recreating the QP. Here fix it. coredump info: 0x0000ffff8fbc37d4 in list_add_before_ 0x0000ffff8fbc381c in list_add_tail_ 0x0000ffff8fbc9d9c in add_qp_to_cq_list 0x0000ffff8fbca008 in create_qp 0x0000ffff8fbca110 in hns_roce_u_create_qp 0x0000ffff8feae39c in __ibv_create_qp_1_1 0x0000000000401420 in test_ctrl_path Fixes:e95b5da96721 ("libhns: Support reporting wc as software mode") Signed-off-by: Yuyu Li Signed-off-by: Xinghai Cen --- providers/hns/hns_roce_u_hw_v2.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/providers/hns/hns_roce_u_hw_v2.c b/providers/hns/hns_roce_u_hw_v2.c index e4232ea..c746e03 100644 --- a/providers/hns/hns_roce_u_hw_v2.c +++ b/providers/hns/hns_roce_u_hw_v2.c @@ -2006,9 +2006,10 @@ static int hns_roce_u_v2_destroy_qp(struct ibv_qp *ibqp) list_del(&qp->rcq_node); } - if (ibqp->send_cq && ibqp->send_cq != ibqp->recv_cq) { - __hns_roce_v2_cq_clean(to_hr_cq(ibqp->send_cq), ibqp->qp_num, - NULL); + if (ibqp->send_cq) { + if (ibqp->send_cq != ibqp->recv_cq) + __hns_roce_v2_cq_clean(to_hr_cq(ibqp->send_cq), ibqp->qp_num, + NULL); list_del(&qp->scq_node); } -- 2.25.1