Defined in 4 files as a function:
- arch/arm64/include/asm/pgtable.h, line 353 (as a function)
- arch/riscv/include/asm/pgtable.h, line 421 (as a function)
- arch/x86/include/asm/pgtable.h, line 419 (as a function)
- include/asm-generic/pgtable_uffd.h, line 32 (as a function)
Referenced in 10 files:
- arch/arm64/include/asm/pgtable.h, line 598
- arch/riscv/include/asm/pgtable.h, line 916
- fs/proc/task_mmu.c, line 2510
- include/asm-generic/hugetlb.h, line 43
- mm/huge_memory.c
- mm/memory.c
- mm/migrate.c
- mm/mprotect.c, line 295
- mm/swapfile.c, line 2506
- mm/userfaultfd.c
Smatch caller information:
mm/huge_memory.c __split_huge_pmd_locked() -> pte_mkuffd()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| LOCK2 | rcu_read | ||
| HALF_LOCKED2 | &vma->vm_private_data->rw_sema |
mm/huge_memory.c __split_huge_zero_page_pmd() -> pte_mkuffd()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pte | r pte_mkspecial |
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| LOCK2 | rcu_read | ||
| HALF_LOCKED2 | &vma->vm_private_data->rw_sema | ||
| HALF_LOCKED2 | ptl |
mm/userfaultfd.c mfill_atomic_install_pte() -> pte_mkuffd()
| Type | Parameter | Key | Value |
|---|---|---|---|
| LOCK2 | &state.ctx->map_changing_lock | ||
| TYPE_LOCK | (struct userfaultfd_ctx)->map_changing_lock |
mm/userfaultfd.c move_present_ptes() -> pte_mkuffd()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pte | r pte_modify |
| LOCK2 | &ctx->map_changing_lock | ||
| LOCK2 | rcu_read | ||
| TYPE_LOCK | (struct userfaultfd_ctx)->map_changing_lock |
mm/userfaultfd.c move_zeropage_pte() -> pte_mkuffd()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pte | r pte_modify |
| LOCK2 | &ctx->map_changing_lock | ||
| LOCK2 | rcu_read | ||
| TYPE_LOCK | (struct userfaultfd_ctx)->map_changing_lock |
mm/swapfile.c unuse_pte() -> pte_mkuffd()
| Type | Parameter | Key | Value |
|---|---|---|---|
| CAPABLE | 0 | 21 | |
| LOCK2 | &mm->mmap_lock | ||
| LOCK2 | ptl | ||
| TYPE_LOCK | (struct mm_struct)->mmap_lock |
fs/proc/task_mmu.c huge_pte_mkuffd() -> pte_mkuffd()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pte | $0 |
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| LOCK2 | &vma->vm_file->f_mapping->i_mmap_rwsem | ||
| TYPE_LOCK | (struct address_space)->i_mmap_rwsem |
fs/proc/task_mmu.c make_uffd_wp_pte() -> pte_mkuffd()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pte | r ptep_modify_prot_start |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| LOCK2 | ptl | ||
| HALF_LOCKED2 | &mm->mmap_lock |
mm/mprotect.c change_present_ptes() -> pte_mkuffd()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pte | r pte_modify |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| LOCK2 | ptl | ||
| HALF_LOCKED2 | &mm->mmap_lock |
mm/hugetlb.c huge_pte_mkuffd() -> pte_mkuffd()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pte | $0 |
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &mm->mmap_lock | ||
| HALF_LOCKED2 | &oldmm->mmap_lock | ||
| HALF_LOCKED2 | &state.ctx->map_changing_lock | ||
| HALF_LOCKED2 | &vma->vm_file->f_mapping->i_mmap_rwsem | ||
| HALF_LOCKED2 | src_ptl | ||
| HALF_LOCKED2 | vmf->ptl |
mm/memory.c copy_present_page() -> pte_mkuffd()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pte | r maybe_mkwrite |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| LOCK2 | &mm->mmap_lock | ||
| LOCK2 | &oldmm->mmap_lock | ||
| LOCK2 | dst_ptl | ||
| LOCK2 | rcu_read | ||
| LOCK2 | src_ptl | ||
| TYPE_LOCK | (struct mm_struct)->mmap_lock |
mm/memory.c do_anonymous_page() -> pte_mkuffd()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pte | r pte_mkspecial |
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| LOCK2 | vmf->ptl | ||
| HALF_LOCKED2 | &mm->mmap_lock |
mm/memory.c do_swap_page() -> pte_mkuffd()
| Type | Parameter | Key | Value |
|---|---|---|---|
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| LOCK2 | vmf->ptl | ||
| HALF_LOCKED2 | &mm->mmap_lock |
mm/memory.c map_anon_folio_pte_nopf() -> pte_mkuffd()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| LOCK2 | vmf->ptl | ||
| HALF_LOCKED2 | &mm->mmap_lock |
mm/memory.c restore_exclusive_pte() -> pte_mkuffd()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &mm->mmap_lock | ||
| HALF_LOCKED2 | &oldmm->mmap_lock | ||
| HALF_LOCKED2 | dst_ptl | ||
| HALF_LOCKED2 | rcu_read | ||
| HALF_LOCKED2 | src_ptl | ||
| HALF_LOCKED2 | vmf->ptl |
mm/memory.c set_pte_range() -> pte_mkuffd()
| Type | Parameter | Key | Value |
|---|---|---|---|
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| LOCK2 | vmf->ptl | ||
| HALF_LOCKED2 | rcu_read |
mm/memory.c wp_page_copy() -> pte_mkuffd()
| Type | Parameter | Key | Value |
|---|---|---|---|
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| LOCK2 | vmf->ptl | ||
| HALF_LOCKED2 | &mm->mmap_lock |
mm/migrate.c remove_migration_pte() -> pte_mkuffd()
| Type | Parameter | Key | Value |
|---|---|---|---|
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &anon_vma->root->rwsem | ||
| HALF_LOCKED2 | &folio->private->lock |
mm/migrate.c try_to_map_unused_to_zeropage() -> pte_mkuffd()
| Type | Parameter | Key | Value |
|---|---|---|---|
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &anon_vma->root->rwsem | ||
| HALF_LOCKED2 | &folio->private->lock |