RDMA/erdma: Fix refcount leak in erdma_mmap
authorMiaoqian Lin <linmq006@gmail.com>
Tue, 20 Dec 2022 12:11:39 +0000 (16:11 +0400)
committerLeon Romanovsky <leon@kernel.org>
Wed, 28 Dec 2022 09:55:34 +0000 (11:55 +0200)
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>
drivers/infiniband/hw/erdma/erdma_verbs.c

index 5dab1e8..9c30d78 100644 (file)
@@ -1110,12 +1110,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;
 }