RDMA/hns: Fix refcount leak in hns_roce_mmap
authorMiaoqian Lin <linmq006@gmail.com>
Fri, 23 Dec 2022 07:29:00 +0000 (11:29 +0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 10 Mar 2023 08:33:29 +0000 (09:33 +0100)
[ Upstream commit cf6a05c8494a8ae7fec8e5f1229b45ca5b4bcd30 ]

rdma_user_mmap_entry_get_pgoff() takes the reference.
Add missing rdma_user_mmap_entry_put() to release the reference.

Fixes: 0045e0d3f42e ("RDMA/hns: Support direct wqe of userspace")
Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
Acked-by Haoyue Xu <xuhaoyue1@hisilicon.com>
Link: https://lore.kernel.org/r/20221223072900.802728-1-linmq006@gmail.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/infiniband/hw/hns/hns_roce_main.c

index 8ba68ac..946ba11 100644 (file)
@@ -443,14 +443,15 @@ static int hns_roce_mmap(struct ib_ucontext *uctx, struct vm_area_struct *vma)
                prot = pgprot_device(vma->vm_page_prot);
                break;
        default:
-               return -EINVAL;
+               ret = -EINVAL;
+               goto out;
        }
 
        ret = rdma_user_mmap_io(uctx, vma, pfn, rdma_entry->npages * PAGE_SIZE,
                                prot, rdma_entry);
 
+out:
        rdma_user_mmap_entry_put(rdma_entry);
-
        return ret;
 }