]> www.infradead.org Git - linux.git/commitdiff
RDMA/bnxt_re: Fix to drop reference to the mmap entry in case of error
authorKalesh AP <kalesh-anakkur.purayil@broadcom.com>
Sat, 4 Jan 2025 06:15:19 +0000 (11:45 +0530)
committerLeon Romanovsky <leon@kernel.org>
Sun, 5 Jan 2025 11:51:49 +0000 (06:51 -0500)
In the error handling path of bnxt_re_mmap(), driver should invoke
rdma_user_mmap_entry_put() to free the reference of mmap entry in case
the error happens after rdma_user_mmap_entry_get was called.

Fixes: ea2224857882 ("RDMA/bnxt_re: Update alloc_page uapi for pacing")
Reviewed-by: Saravanan Vajravel <saravanan.vajravel@broadcom.com>
Reviewed-by: Kashyap Desai <kashyap.desai@broadcom.com>
Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Signed-off-by: Selvin Xavier <selvin.xavier@broadcom.com>
Link: https://patch.msgid.link/20250104061519.2540178-1-kalesh-anakkur.purayil@broadcom.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>
drivers/infiniband/hw/bnxt_re/ib_verbs.c

index 129178bdc5812098f9c7cb4b9f024c1a8fd62c54..27efaaf1c82a0936c908ce73ee8c4d8958ad1f9c 100644 (file)
@@ -4465,9 +4465,10 @@ int bnxt_re_mmap(struct ib_ucontext *ib_uctx, struct vm_area_struct *vma)
        case BNXT_RE_MMAP_TOGGLE_PAGE:
                /* Driver doesn't expect write access for user space */
                if (vma->vm_flags & VM_WRITE)
-                       return -EFAULT;
-               ret = vm_insert_page(vma, vma->vm_start,
-                                    virt_to_page((void *)bnxt_entry->mem_offset));
+                       ret = -EFAULT;
+               else
+                       ret = vm_insert_page(vma, vma->vm_start,
+                                            virt_to_page((void *)bnxt_entry->mem_offset));
                break;
        default:
                ret = -EINVAL;