]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
RDMA/hns: Fix HW configurations not cleared in error flow
authorwenglianfa <wenglianfa@huawei.com>
Thu, 3 Jul 2025 11:39:01 +0000 (19:39 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 15 Aug 2025 14:39:05 +0000 (16:39 +0200)
[ Upstream commit 998b41cb20b02c4e28ac558e4e7f8609d659ec05 ]

hns_roce_clear_extdb_list_info() will eventually do some HW
configurations through FW, and they need to be cleared by
calling hns_roce_function_clear() when the initialization
fails.

Fixes: 7e78dd816e45 ("RDMA/hns: Clear extended doorbell info before using")
Signed-off-by: wenglianfa <wenglianfa@huawei.com>
Signed-off-by: Junxian Huang <huangjunxian6@hisilicon.com>
Link: https://patch.msgid.link/20250703113905.3597124-3-huangjunxian6@hisilicon.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/infiniband/hw/hns/hns_roce_hw_v2.c

index 29068be052d9e10d4cd95a117301b35d49569980..2b04e25c6b09e36055c0be63cbd8aa86fa342196 100644 (file)
@@ -3001,7 +3001,7 @@ static int hns_roce_v2_init(struct hns_roce_dev *hr_dev)
 
        ret = get_hem_table(hr_dev);
        if (ret)
-               goto err_clear_extdb_failed;
+               goto err_get_hem_table_failed;
 
        if (hr_dev->is_vf)
                return 0;
@@ -3016,6 +3016,8 @@ static int hns_roce_v2_init(struct hns_roce_dev *hr_dev)
 
 err_llm_init_failed:
        put_hem_table(hr_dev);
+err_get_hem_table_failed:
+       hns_roce_function_clear(hr_dev);
 err_clear_extdb_failed:
        if (hr_dev->pci_dev->revision == PCI_REVISION_ID_HIP08)
                free_mr_exit(hr_dev);