[PATCH v2] RDMA/hns: Fix refcount leak in hns_roce_mmap

Miaoqian Lin posted 1 patch 2 years, 8 months ago
drivers/infiniband/hw/hns/hns_roce_main.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
[PATCH v2] RDMA/hns: Fix refcount leak in hns_roce_mmap
Posted by Miaoqian Lin 2 years, 8 months ago
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>
---
change in v2:
- use goto label to manage the release.
---
 drivers/infiniband/hw/hns/hns_roce_main.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/infiniband/hw/hns/hns_roce_main.c b/drivers/infiniband/hw/hns/hns_roce_main.c
index 8ba68ac12388..946ba1109e87 100644
--- a/drivers/infiniband/hw/hns/hns_roce_main.c
+++ b/drivers/infiniband/hw/hns/hns_roce_main.c
@@ -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;
 }
 
-- 
2.25.1
Re: [PATCH v2] RDMA/hns: Fix refcount leak in hns_roce_mmap
Posted by Leon Romanovsky 2 years, 8 months ago
On Fri, 23 Dec 2022 11:29:00 +0400, Miaoqian Lin wrote:
> rdma_user_mmap_entry_get_pgoff() takes the reference.
> Add missing rdma_user_mmap_entry_put() to release the reference.
> 
> 

Applied, thanks!

[1/1] RDMA/hns: Fix refcount leak in hns_roce_mmap
      https://git.kernel.org/rdma/rdma/c/cf6a05c8494a8a

Best regards,
-- 
Leon Romanovsky <leon@kernel.org>
Re: [PATCH v2] RDMA/hns: Fix refcount leak in hns_roce_mmap
Posted by xuhaoyue (A) 2 years, 8 months ago
On 2022/12/23 15:29:00, Miaoqian Lin wrote:
> 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>
> ---
> change in v2:
> - use goto label to manage the release.
> ---
>  drivers/infiniband/hw/hns/hns_roce_main.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/infiniband/hw/hns/hns_roce_main.c b/drivers/infiniband/hw/hns/hns_roce_main.c
> index 8ba68ac12388..946ba1109e87 100644
> --- a/drivers/infiniband/hw/hns/hns_roce_main.c
> +++ b/drivers/infiniband/hw/hns/hns_roce_main.c
> @@ -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;
>  }
>  
> 

Thank you. For the patch:
Acked-by Haoyue Xu <xuhaoyue1@hisilicon.com>

Regards,
Haoyue