Lines Matching refs:mm
66 struct mm_struct *mm; member
164 mmdrop(ctx->mm); in userfaultfd_ctx_put()
222 struct mm_struct *mm = ctx->mm; in userfaultfd_huge_must_wait() local
226 VM_BUG_ON(!rwsem_is_locked(&mm->mmap_sem)); in userfaultfd_huge_must_wait()
228 ptep = huge_pte_offset(mm, address, vma_mmu_pagesize(vma)); in userfaultfd_huge_must_wait()
270 struct mm_struct *mm = ctx->mm; in userfaultfd_must_wait() local
278 VM_BUG_ON(!rwsem_is_locked(&mm->mmap_sem)); in userfaultfd_must_wait()
280 pgd = pgd_offset(mm, address); in userfaultfd_must_wait()
340 struct mm_struct *mm = vmf->vma->vm_mm; in handle_userfault() local
367 WARN_ON_ONCE(!rwsem_is_locked(&mm->mmap_sem)); in handle_userfault()
373 BUG_ON(ctx->mm != mm); in handle_userfault()
480 up_read(&mm->mmap_sem); in handle_userfault()
534 down_read(&mm->mmap_sem); in handle_userfault()
626 struct mm_struct *mm = release_new_ctx->mm; in userfaultfd_event_wait_completion() local
629 down_write(&mm->mmap_sem); in userfaultfd_event_wait_completion()
631 VM_WARN_ON(!mmget_still_valid(mm)); in userfaultfd_event_wait_completion()
632 for (vma = mm->mmap; vma; vma = vma->vm_next) in userfaultfd_event_wait_completion()
637 up_write(&mm->mmap_sem); in userfaultfd_event_wait_completion()
692 ctx->mm = vma->vm_mm; in dup_userfaultfd()
693 atomic_inc(&ctx->mm->mm_count); in dup_userfaultfd()
769 struct mm_struct *mm = vma->vm_mm; in userfaultfd_remove() local
778 up_read(&mm->mmap_sem); in userfaultfd_remove()
830 void userfaultfd_unmap_complete(struct mm_struct *mm, struct list_head *uf) in userfaultfd_unmap_complete() argument
852 struct mm_struct *mm = ctx->mm; in userfaultfd_release() local
861 if (!mmget_not_zero(mm)) in userfaultfd_release()
872 down_write(&mm->mmap_sem); in userfaultfd_release()
873 still_valid = mmget_still_valid(mm); in userfaultfd_release()
875 for (vma = mm->mmap; vma; vma = vma->vm_next) { in userfaultfd_release()
885 prev = vma_merge(mm, prev, vma->vm_start, vma->vm_end, in userfaultfd_release()
899 up_write(&mm->mmap_sem); in userfaultfd_release()
900 mmput(mm); in userfaultfd_release()
1259 static __always_inline int validate_range(struct mm_struct *mm, in validate_range() argument
1262 __u64 task_size = mm->task_size; in validate_range()
1288 struct mm_struct *mm = ctx->mm; in userfaultfd_register() local
1324 ret = validate_range(mm, uffdio_register.range.start, in userfaultfd_register()
1333 if (!mmget_not_zero(mm)) in userfaultfd_register()
1336 down_write(&mm->mmap_sem); in userfaultfd_register()
1337 if (!mmget_still_valid(mm)) in userfaultfd_register()
1339 vma = find_vma_prev(mm, start, &prev); in userfaultfd_register()
1447 prev = vma_merge(mm, prev, start, vma_end, new_flags, in userfaultfd_register()
1457 ret = split_vma(mm, vma, start, 1); in userfaultfd_register()
1462 ret = split_vma(mm, vma, end, 0); in userfaultfd_register()
1481 up_write(&mm->mmap_sem); in userfaultfd_register()
1482 mmput(mm); in userfaultfd_register()
1501 struct mm_struct *mm = ctx->mm; in userfaultfd_unregister() local
1514 ret = validate_range(mm, uffdio_unregister.start, in userfaultfd_unregister()
1523 if (!mmget_not_zero(mm)) in userfaultfd_unregister()
1526 down_write(&mm->mmap_sem); in userfaultfd_unregister()
1527 if (!mmget_still_valid(mm)) in userfaultfd_unregister()
1529 vma = find_vma_prev(mm, start, &prev); in userfaultfd_unregister()
1610 prev = vma_merge(mm, prev, start, vma_end, new_flags, in userfaultfd_unregister()
1620 ret = split_vma(mm, vma, start, 1); in userfaultfd_unregister()
1625 ret = split_vma(mm, vma, end, 0); in userfaultfd_unregister()
1644 up_write(&mm->mmap_sem); in userfaultfd_unregister()
1645 mmput(mm); in userfaultfd_unregister()
1666 ret = validate_range(ctx->mm, uffdio_wake.start, uffdio_wake.len); in userfaultfd_wake()
1702 ret = validate_range(ctx->mm, uffdio_copy.dst, uffdio_copy.len); in userfaultfd_copy()
1715 if (mmget_not_zero(ctx->mm)) { in userfaultfd_copy()
1716 ret = mcopy_atomic(ctx->mm, uffdio_copy.dst, uffdio_copy.src, in userfaultfd_copy()
1718 mmput(ctx->mm); in userfaultfd_copy()
1754 ret = validate_range(ctx->mm, uffdio_zeropage.range.start, in userfaultfd_zeropage()
1762 if (mmget_not_zero(ctx->mm)) { in userfaultfd_zeropage()
1763 ret = mfill_zeropage(ctx->mm, uffdio_zeropage.range.start, in userfaultfd_zeropage()
1765 mmput(ctx->mm); in userfaultfd_zeropage()
1943 BUG_ON(!current->mm); in userfaultfd_file_create()
1963 ctx->mm = current->mm; in userfaultfd_file_create()
1965 mmgrab(ctx->mm); in userfaultfd_file_create()
1970 mmdrop(ctx->mm); in userfaultfd_file_create()