RDMA/erdma: Fix refcount leak in erdma_mmap
authorMiaoqian Lin <linmq006@gmail.com>
Tue, 20 Dec 2022 12:11:39 +0000 (16:11 +0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 10 Mar 2023 08:33:28 +0000 (09:33 +0100)
[ Upstream commit ee84146c05ad2316b9a7222d0ec4413e0bf30eeb ]

rdma_user_mmap_entry_get() take reference, we should release it when not
need anymore, add the missing rdma_user_mmap_entry_put() in the error
path to fix it.

Fixes: 155055771704 ("RDMA/erdma: Add verbs implementation")
Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
Link: https://lore.kernel.org/r/20221220121139.1540564-1-linmq006@gmail.com
Acked-by: Cheng Xu <chengyou@linux.alibaba.com>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/infiniband/hw/erdma/erdma_verbs.c

index 62be98e..19c69ea 100644 (file)
@@ -1089,12 +1089,14 @@ int erdma_mmap(struct ib_ucontext *ctx, struct vm_area_struct *vma)
                prot = pgprot_device(vma->vm_page_prot);
                break;
        default:
-               return -EINVAL;
+               err = -EINVAL;
+               goto put_entry;
        }
 
        err = rdma_user_mmap_io(ctx, vma, PFN_DOWN(entry->address), PAGE_SIZE,
                                prot, rdma_entry);
 
+put_entry:
        rdma_user_mmap_entry_put(rdma_entry);
        return err;
 }