]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
RDMA/hns: Fix missing xa_destroy()
authorJunxian Huang <huangjunxian6@hisilicon.com>
Tue, 11 Mar 2025 08:48:56 +0000 (16:48 +0800)
committerLeon Romanovsky <leon@kernel.org>
Wed, 12 Mar 2025 18:35:50 +0000 (14:35 -0400)
Add xa_destroy() for xarray in driver.

Fixes: 5c1f167af112 ("RDMA/hns: Init SRQ table for hip08")
Fixes: 27e19f451089 ("RDMA/hns: Convert cq_table to XArray")
Fixes: 736b5a70db98 ("RDMA/hns: Convert qp_table_tree to XArray")
Signed-off-by: Junxian Huang <huangjunxian6@hisilicon.com>
Link: https://patch.msgid.link/20250311084857.3803665-7-huangjunxian6@hisilicon.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>
drivers/infiniband/hw/hns/hns_roce_alloc.c
drivers/infiniband/hw/hns/hns_roce_cq.c
drivers/infiniband/hw/hns/hns_roce_qp.c

index 950c133d4220e7f153a2a0db8dae524fc4162713..6ee911f6885b54bf76a4503e44ead6bd1afa4444 100644 (file)
@@ -175,8 +175,10 @@ void hns_roce_cleanup_bitmap(struct hns_roce_dev *hr_dev)
        if (hr_dev->caps.flags & HNS_ROCE_CAP_FLAG_XRC)
                ida_destroy(&hr_dev->xrcd_ida.ida);
 
-       if (hr_dev->caps.flags & HNS_ROCE_CAP_FLAG_SRQ)
+       if (hr_dev->caps.flags & HNS_ROCE_CAP_FLAG_SRQ) {
                ida_destroy(&hr_dev->srq_table.srq_ida.ida);
+               xa_destroy(&hr_dev->srq_table.xa);
+       }
        hns_roce_cleanup_qp_table(hr_dev);
        hns_roce_cleanup_cq_table(hr_dev);
        ida_destroy(&hr_dev->mr_table.mtpt_ida.ida);
index 4106423a1b399d96cd8032a9dc3ebe2387a52621..3a5c93c9fb3e66bde70f59752cf6781a86010888 100644 (file)
@@ -537,5 +537,6 @@ void hns_roce_cleanup_cq_table(struct hns_roce_dev *hr_dev)
 
        for (i = 0; i < HNS_ROCE_CQ_BANK_NUM; i++)
                ida_destroy(&hr_dev->cq_table.bank[i].ida);
+       xa_destroy(&hr_dev->cq_table.array);
        mutex_destroy(&hr_dev->cq_table.bank_mutex);
 }
index 52b671156246b8ced437ad892ac75176d04f8161..8901c142c1b652e94a95bd61dfad0c8802d6a184 100644 (file)
@@ -1603,6 +1603,7 @@ void hns_roce_cleanup_qp_table(struct hns_roce_dev *hr_dev)
        for (i = 0; i < HNS_ROCE_QP_BANK_NUM; i++)
                ida_destroy(&hr_dev->qp_table.bank[i].ida);
        xa_destroy(&hr_dev->qp_table.dip_xa);
+       xa_destroy(&hr_dev->qp_table_xa);
        mutex_destroy(&hr_dev->qp_table.bank_mutex);
        mutex_destroy(&hr_dev->qp_table.scc_mutex);
 }