mirror of
https://github.com/torvalds/linux.git
synced 2026-09-23 05:04:02 +02:00
RDMA/bnxt_re: Clear VM_MAYWRITE on DBR/toggle page mmap
bnxt_re_mmap() rejects VM_WRITE for the DBR_PAGE and TOGGLE_PAGE mmap
flags, but a read-only mapping can still retain VM_MAYWRITE. nd later
be upgraded with mprotect(PROT_WRITE). This can bypass the write check
that only runs at mmap time.
Clear VM_MAYWRITE before vm_insert_page() in the shared DBR/toggle-page
branch, matching the existing policy that userspace writes are not
expected for these pages.
Fixes: ea22248578 ("RDMA/bnxt_re: Update alloc_page uapi for pacing")
Suggested-by: Yousef Alhouseen <alhouseenyousef@gmail.com>
Signed-off-by: Selvin Xavier <selvin.xavier@broadcom.com>
Link: https://patch.msgid.link/20260721115440.24021-5-selvin.xavier@broadcom.com
Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
This commit is contained in:
parent
0e8e94c150
commit
9b66c9af71
|
|
@ -4985,11 +4985,13 @@ int bnxt_re_mmap(struct ib_ucontext *ib_uctx, struct vm_area_struct *vma)
|
|||
case BNXT_RE_MMAP_DBR_PAGE:
|
||||
case BNXT_RE_MMAP_TOGGLE_PAGE:
|
||||
/* Driver doesn't expect write access for user space */
|
||||
if (vma->vm_flags & VM_WRITE)
|
||||
if (vma->vm_flags & VM_WRITE) {
|
||||
ret = -EFAULT;
|
||||
else
|
||||
} else {
|
||||
vm_flags_clear(vma, VM_MAYWRITE);
|
||||
ret = vm_insert_page(vma, vma->vm_start,
|
||||
virt_to_page((void *)bnxt_entry->mem_offset));
|
||||
}
|
||||
break;
|
||||
default:
|
||||
ret = -EINVAL;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user