RDMA/hns: fix memory leak in hns_roce_alloc_mr()
authorZhengchao Shao <shaozhengchao@huawei.com>
Sat, 19 Nov 2022 07:08:34 +0000 (15:08 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 31 Dec 2022 12:32:33 +0000 (13:32 +0100)
[ Upstream commit a115aa00b18f7b8982b8f458149632caf64a862a ]

When hns_roce_mr_enable() failed in hns_roce_alloc_mr(), mr_key is not
released. Compiled test only.

Fixes: 9b2cf76c9f05 ("RDMA/hns: Optimize PBL buffer allocation process")
Signed-off-by: Zhengchao Shao <shaozhengchao@huawei.com>
Link: https://lore.kernel.org/r/20221119070834.48502-1-shaozhengchao@huawei.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/infiniband/hw/hns/hns_roce_mr.c

index 845ac7d..37a5cf6 100644 (file)
@@ -392,10 +392,10 @@ struct ib_mr *hns_roce_alloc_mr(struct ib_pd *pd, enum ib_mr_type mr_type,
 
        return &mr->ibmr;
 
-err_key:
-       free_mr_key(hr_dev, mr);
 err_pbl:
        free_mr_pbl(hr_dev, mr);
+err_key:
+       free_mr_key(hr_dev, mr);
 err_free:
        kfree(mr);
        return ERR_PTR(ret);