diff mbox series

RDMA/hns: Fix refcount leak in hns_roce_mmap

Message ID 20221220113047.1463078-1-linmq006@gmail.com (mailing list archive)
State Superseded
Headers show
Series RDMA/hns: Fix refcount leak in hns_roce_mmap | expand

Commit Message

Miaoqian Lin Dec. 20, 2022, 11:30 a.m. UTC
rdma_user_mmap_entry_get_pgoff() takes 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>
---
 drivers/infiniband/hw/hns/hns_roce_main.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Haoyue Xu Dec. 23, 2022, 3:51 a.m. UTC | #1
Thank you. This patch is right. Could you change it to this form?

	default:
		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;

On 2022/12/20 19:30:47, Miaoqian Lin wrote:
> rdma_user_mmap_entry_get_pgoff() takes 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>
> ---
>  drivers/infiniband/hw/hns/hns_roce_main.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/infiniband/hw/hns/hns_roce_main.c b/drivers/infiniband/hw/hns/hns_roce_main.c
> index 8ba68ac12388..fbff8df9236d 100644
> --- a/drivers/infiniband/hw/hns/hns_roce_main.c
> +++ b/drivers/infiniband/hw/hns/hns_roce_main.c
> @@ -443,6 +443,7 @@ static int hns_roce_mmap(struct ib_ucontext *uctx, struct vm_area_struct *vma)
>  		prot = pgprot_device(vma->vm_page_prot);
>  		break;
>  	default:
> +		rdma_user_mmap_entry_put(rdma_entry);
>  		return -EINVAL;
>  	}
>  
>
diff mbox series

Patch

diff --git a/drivers/infiniband/hw/hns/hns_roce_main.c b/drivers/infiniband/hw/hns/hns_roce_main.c
index 8ba68ac12388..fbff8df9236d 100644
--- a/drivers/infiniband/hw/hns/hns_roce_main.c
+++ b/drivers/infiniband/hw/hns/hns_roce_main.c
@@ -443,6 +443,7 @@  static int hns_roce_mmap(struct ib_ucontext *uctx, struct vm_area_struct *vma)
 		prot = pgprot_device(vma->vm_page_prot);
 		break;
 	default:
+		rdma_user_mmap_entry_put(rdma_entry);
 		return -EINVAL;
 	}