Commit 5707ea06 authored by Junxian Huang's avatar Junxian Huang
Browse files

RDMA/hns: Fix DCA error path in alloc_wqe_buf()

driver inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/IBSE4C



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

When hns_roce_map_dca_safe_page() fails in alloc_wqe_buf(),
hns_roce_disable_dca() should be called in error path.

Fixes: 36f678e7 ("RDMA/hns: Fix possible RAS when DCA is not attached")
Signed-off-by: default avatarJunxian Huang <huangjunxian6@hisilicon.com>
Signed-off-by: default avatarXinghai Cen <cenxinghai@h-partners.com>
parent 2f7961d8
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -866,12 +866,13 @@ static int alloc_wqe_buf(struct hns_roce_dev *hr_dev, struct hns_roce_qp *hr_qp,
	if (IS_ERR(hr_qp->mtr)) {
		ret = PTR_ERR(hr_qp->mtr);
		ibdev_err(ibdev, "failed to create WQE mtr, ret = %d.\n", ret);
		if (dca_en)
			hns_roce_disable_dca(hr_dev, hr_qp, udata);
	} else if (dca_en) {
		ret = hns_roce_map_dca_safe_page(hr_dev, hr_qp);
	}

	if (ret && dca_en)
		hns_roce_disable_dca(hr_dev, hr_qp, udata);

	return ret;
}