
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: 36f678e7fa0f ("RDMA/hns: Fix possible RAS when DCA is not attached") Signed-off-by: Junxian Huang <huangjunxian6@hisilicon.com> Signed-off-by: Xinghai Cen <cenxinghai@h-partners.com> --- drivers/infiniband/hw/hns/hns_roce_qp.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/infiniband/hw/hns/hns_roce_qp.c b/drivers/infiniband/hw/hns/hns_roce_qp.c index cd3a67e66eff..f444787f0598 100644 --- a/drivers/infiniband/hw/hns/hns_roce_qp.c +++ b/drivers/infiniband/hw/hns/hns_roce_qp.c @@ -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; } -- 2.33.0