Commit 2e3913b6 authored by Chengchang Tang's avatar Chengchang Tang Committed by li-huisong
Browse files

RDMA/hns: Fix accessing invalid dip_ctx during destroying QP

maillist inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/IBDW6Z
CVE: NA

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma.git/commit/?id=0572eccf239ce4bd89bd531767ec5ab20e249290



----------------------------------------------------------------------

If it fails to modify QP to RTR, dip_ctx will not be attached. And
iuring detroying QP, the invalid dip_ctx pointer will be accessed.

Fixes: faa62440a577 ("RDMA/hns: Fix different dgids mapping to the same dip_idx")
Signed-off-by: default avatarChengchang Tang <tangchengchang@huawei.com>
Signed-off-by: default avatarJunxian Huang <huangjunxian6@hisilicon.com>
Link: https://patch.msgid.link/20241220055249.146943-3-huangjunxian6@hisilicon.com


Signed-off-by: default avatarLeon Romanovsky <leon@kernel.org>
Signed-off-by: default avatarXinghai Cen <cenxinghai@h-partners.com>
parent f0ae0628
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -6039,6 +6039,9 @@ static void put_dip_ctx_idx(struct hns_roce_dev *hr_dev,
{
	struct hns_roce_dip *hr_dip = hr_qp->dip;

	if (!hr_dip)
		return;

	xa_lock(&hr_dev->qp_table.dip_xa);

	hr_dip->qp_cnt--;