Sashiko points out that pvrdma_uar_free() is already called within
pvrdma_dealloc_ucontext(), so calling it before triggers a double free.

Cc: [email protected]
Fixes: 29c8d9eba550 ("IB: Add vmw_pvrdma driver")
Link: 
https://sashiko.dev/#/patchset/0-v1-e911b76a94d1%2B65d95-rdma_udata_rep_jgg%40nvidia.com?part=4
Signed-off-by: Jason Gunthorpe <[email protected]>
---
 drivers/infiniband/hw/vmw_pvrdma/pvrdma_verbs.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/infiniband/hw/vmw_pvrdma/pvrdma_verbs.c 
b/drivers/infiniband/hw/vmw_pvrdma/pvrdma_verbs.c
index bcd43dc30e21c6..c7c2b41060e526 100644
--- a/drivers/infiniband/hw/vmw_pvrdma/pvrdma_verbs.c
+++ b/drivers/infiniband/hw/vmw_pvrdma/pvrdma_verbs.c
@@ -322,7 +322,7 @@ int pvrdma_alloc_ucontext(struct ib_ucontext *uctx, struct 
ib_udata *udata)
        uresp.qp_tab_size = vdev->dsr->caps.max_qp;
        ret = ib_copy_to_udata(udata, &uresp, sizeof(uresp));
        if (ret) {
-               pvrdma_uar_free(vdev, &context->uar);
+               /* pvrdma_dealloc_ucontext() also frees the UAR */
                pvrdma_dealloc_ucontext(&context->ibucontext);
                return -EFAULT;
        }
-- 
2.43.0


Reply via email to