Lines Matching refs:mm
59 struct mm_struct *mm; member
140 mmdrop(ctx->mm); in userfaultfd_ctx_put()
196 struct mm_struct *mm = ctx->mm; in userfaultfd_must_wait() local
203 VM_BUG_ON(!rwsem_is_locked(&mm->mmap_sem)); in userfaultfd_must_wait()
205 pgd = pgd_offset(mm, address); in userfaultfd_must_wait()
263 struct mm_struct *mm = vma->vm_mm; in handle_userfault() local
269 BUG_ON(!rwsem_is_locked(&mm->mmap_sem)); in handle_userfault()
276 BUG_ON(ctx->mm != mm); in handle_userfault()
357 up_read(&mm->mmap_sem); in handle_userfault()
388 down_read(&mm->mmap_sem); in handle_userfault()
429 struct mm_struct *mm = ctx->mm; in userfaultfd_release() local
438 if (!mmget_not_zero(mm)) in userfaultfd_release()
449 down_write(&mm->mmap_sem); in userfaultfd_release()
450 still_valid = mmget_still_valid(mm); in userfaultfd_release()
452 for (vma = mm->mmap; vma; vma = vma->vm_next) { in userfaultfd_release()
462 prev = vma_merge(mm, prev, vma->vm_start, vma->vm_end, in userfaultfd_release()
476 up_write(&mm->mmap_sem); in userfaultfd_release()
477 mmput(mm); in userfaultfd_release()
706 static __always_inline int validate_range(struct mm_struct *mm, in validate_range() argument
709 __u64 task_size = mm->task_size; in validate_range()
729 struct mm_struct *mm = ctx->mm; in userfaultfd_register() local
764 ret = validate_range(mm, uffdio_register.range.start, in userfaultfd_register()
773 if (!mmget_not_zero(mm)) in userfaultfd_register()
776 down_write(&mm->mmap_sem); in userfaultfd_register()
777 if (!mmget_still_valid(mm)) in userfaultfd_register()
779 vma = find_vma_prev(mm, start, &prev); in userfaultfd_register()
846 prev = vma_merge(mm, prev, start, vma_end, new_flags, in userfaultfd_register()
856 ret = split_vma(mm, vma, start, 1); in userfaultfd_register()
861 ret = split_vma(mm, vma, end, 0); in userfaultfd_register()
880 up_write(&mm->mmap_sem); in userfaultfd_register()
881 mmput(mm); in userfaultfd_register()
899 struct mm_struct *mm = ctx->mm; in userfaultfd_unregister() local
912 ret = validate_range(mm, uffdio_unregister.start, in userfaultfd_unregister()
921 if (!mmget_not_zero(mm)) in userfaultfd_unregister()
924 down_write(&mm->mmap_sem); in userfaultfd_unregister()
925 if (!mmget_still_valid(mm)) in userfaultfd_unregister()
927 vma = find_vma_prev(mm, start, &prev); in userfaultfd_unregister()
986 prev = vma_merge(mm, prev, start, vma_end, new_flags, in userfaultfd_unregister()
996 ret = split_vma(mm, vma, start, 1); in userfaultfd_unregister()
1001 ret = split_vma(mm, vma, end, 0); in userfaultfd_unregister()
1020 up_write(&mm->mmap_sem); in userfaultfd_unregister()
1021 mmput(mm); in userfaultfd_unregister()
1042 ret = validate_range(ctx->mm, uffdio_wake.start, uffdio_wake.len); in userfaultfd_wake()
1078 ret = validate_range(ctx->mm, uffdio_copy.dst, uffdio_copy.len); in userfaultfd_copy()
1091 if (mmget_not_zero(ctx->mm)) { in userfaultfd_copy()
1092 ret = mcopy_atomic(ctx->mm, uffdio_copy.dst, uffdio_copy.src, in userfaultfd_copy()
1094 mmput(ctx->mm); in userfaultfd_copy()
1128 ret = validate_range(ctx->mm, uffdio_zeropage.range.start, in userfaultfd_zeropage()
1136 if (mmget_not_zero(ctx->mm)) { in userfaultfd_zeropage()
1137 ret = mfill_zeropage(ctx->mm, uffdio_zeropage.range.start, in userfaultfd_zeropage()
1139 mmput(ctx->mm); in userfaultfd_zeropage()
1297 BUG_ON(!current->mm); in userfaultfd_file_create()
1316 ctx->mm = current->mm; in userfaultfd_file_create()
1318 atomic_inc(&ctx->mm->mm_count); in userfaultfd_file_create()
1323 mmdrop(ctx->mm); in userfaultfd_file_create()