Defined in 4 files as a function:
- arch/arm64/include/asm/pgtable.h, line 348 (as a function)
- arch/riscv/include/asm/pgtable.h, line 416 (as a function)
- arch/x86/include/asm/pgtable.h, line 414 (as a function)
- include/asm-generic/pgtable_uffd.h, line 22 (as a function)
Referenced in 13 files:
- arch/arm64/include/asm/pgtable.h, line 597
- arch/riscv/include/asm/pgtable.h, line 911
- fs/proc/task_mmu.c
- include/asm-generic/hugetlb.h, line 57
- include/linux/userfaultfd_k.h
- mm/khugepaged.c, line 776
- mm/memory.c
- mm/migrate_device.c, line 459
- mm/mprotect.c
- mm/mremap.c, line 306
- mm/page_table_check.c, line 202
- mm/rmap.c
- mm/userfaultfd.c, line 2801
Smatch caller information:
mm/userfaultfd.c huge_pte_uffd() -> pte_uffd()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pte | $0 |
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING |
mm/userfaultfd.c userfaultfd_must_wait() -> pte_uffd()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pte | r ptep_get |
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| LOCK2 | rcu_read |
fs/proc/task_mmu.c huge_pte_uffd() -> pte_uffd()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pte | $0 |
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &m->lock | ||
| HALF_LOCKED2 | &mapping->i_mmap_rwsem |
fs/proc/task_mmu.c pagemap_page_category() -> pte_uffd()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pte | $3 |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| LOCK2 | ptl | ||
| HALF_LOCKED2 | &mm->mmap_lock |
fs/proc/task_mmu.c pagemap_scan_pmd_entry() -> pte_uffd()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pte | r ptep_get |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| LOCK2 | ptl | ||
| HALF_LOCKED2 | &mm->mmap_lock |
fs/proc/task_mmu.c pagemap_scan_pmd_entry() -> pte_uffd()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pte | r ptep_get |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| LOCK2 | ptl | ||
| HALF_LOCKED2 | &mm->mmap_lock |
fs/proc/task_mmu.c pte_to_pagemap_entry() -> pte_uffd()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pte | $3 |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| LOCK2 | ptl | ||
| HALF_LOCKED2 | &mm->mmap_lock |
mm/page_table_check.c page_table_check_pte_flags() -> pte_uffd()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pte | $0 |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &mm->mmap_lock | ||
| HALF_LOCKED2 | flags | ||
| HALF_LOCKED2 | global &ksm_thread_mutex | ||
| HALF_LOCKED2 | old_ptl | ||
| HALF_LOCKED2 | ptl | ||
| HALF_LOCKED2 | rcu_read |
mm/rmap.c swp_pte_prepare() -> pte_uffd()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pte | $1 |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &anon_vma->root->rwsem | ||
| HALF_LOCKED2 | &folio->private->lock |
mm/rmap.c try_to_migrate_one() -> pte_uffd()
| Type | Parameter | Key | Value |
|---|---|---|---|
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &anon_vma->root->rwsem | ||
| HALF_LOCKED2 | &folio->private->lock | ||
| HALF_LOCKED2 | &resv_map->rw_sema | ||
| HALF_LOCKED2 | &vma->vm_private_data->rw_sema |
mm/mprotect.c change_present_ptes() -> pte_uffd()
| Type | Parameter | Key | Value |
|---|---|---|---|
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| LOCK2 | ptl | ||
| HALF_LOCKED2 | &mm->mmap_lock |
mm/mprotect.c change_pte_range() -> pte_uffd()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pte | r ptep_get |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| LOCK2 | ptl | ||
| HALF_LOCKED2 | &dst_mm->mmap_lock | ||
| HALF_LOCKED2 | &mm->mmap_lock |
mm/mprotect.c userfaultfd_pte_wp() -> pte_uffd()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pte | $1 |
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &mm->mmap_lock | ||
| HALF_LOCKED2 | ptl |
mm/hugetlb.c huge_pte_uffd() -> pte_uffd()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pte | $0 |
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &mapping->i_mmap_rwsem | ||
| HALF_LOCKED2 | &mm->mmap_lock | ||
| HALF_LOCKED2 | &oldmm->mmap_lock | ||
| HALF_LOCKED2 | &vma->vm_file->f_mapping->i_mmap_rwsem | ||
| HALF_LOCKED2 | src_ptl | ||
| HALF_LOCKED2 | vmf->ptl |
mm/mremap.c move_ptes() -> pte_uffd()
| Type | Parameter | Key | Value |
|---|---|---|---|
| LOCK2 | &mm->mmap_lock | ||
| LOCK2 | old_ptl | ||
| LOCK2 | rcu_read | ||
| HALF_LOCKED2 | &tsk->signal->exec_update_lock | ||
| HALF_LOCKED2 | new_ptl | ||
| TYPE_LOCK | (struct mm_struct)->mmap_lock |
mm/migrate_device.c migrate_vma_collect_pmd() -> pte_uffd()
| Type | Parameter | Key | Value |
|---|---|---|---|
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| LOCK2 | ptl | ||
| HALF_LOCKED2 | &mm->mmap_lock |
mm/memory.c __copy_present_ptes() -> pte_uffd()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pte | $4 |
| 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 cond_install_uffd_wp_ptes() -> pte_uffd()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pte | $3 |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | ptl |
mm/memory.c copy_present_page() -> pte_uffd()
| Type | Parameter | Key | Value |
|---|---|---|---|
| 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 numa_rebuild_large_mapping() -> pte_uffd()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pte | r ptep_get |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| LOCK2 | vmf->ptl | ||
| HALF_LOCKED2 | &mm->mmap_lock | ||
| HALF_LOCKED2 | &pool->lock | ||
| HALF_LOCKED2 | rcu_read |
mm/memory.c userfaultfd_pte_rwp() -> pte_uffd()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pte | $1 |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| LOCK2 | rcu_read | ||
| HALF_LOCKED2 | &mm->mmap_lock | ||
| HALF_LOCKED2 | &pool->lock |
mm/memory.c userfaultfd_pte_wp() -> pte_uffd()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pte | $1 |
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &mm->mmap_lock | ||
| HALF_LOCKED2 | ptl | ||
| HALF_LOCKED2 | vmf->ptl |
mm/memory.c wp_page_copy() -> pte_uffd()
| Type | Parameter | Key | Value |
|---|---|---|---|
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| LOCK2 | vmf->ptl | ||
| HALF_LOCKED2 | &mm->mmap_lock |
mm/gup.c userfaultfd_pte_wp() -> pte_uffd()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pte | $1 |
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| LOCK2 | ptl | ||
| HALF_LOCKED2 | &mm->mmap_lock |
kernel/events/uprobes.c userfaultfd_pte_wp() -> pte_uffd()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pte | $1 |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &mm->mmap_lock | ||
| HALF_LOCKED2 | &uprobe->register_rwsem |
mm/khugepaged.c collapse_check_pte() -> pte_uffd()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pte | $0 |
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &mm->mmap_lock | ||
| HALF_LOCKED2 | &vma->anon_vma->root->rwsem | ||
| HALF_LOCKED2 | pte_ptl | ||
| HALF_LOCKED2 | ptl |