Defined in 1 files as a macro:
Defined in 26 files as a function:
- arch/alpha/include/asm/pgtable.h, line 235 (as a function)
- arch/arm/include/asm/pgtable.h, line 219 (as a function)
- arch/arm64/include/asm/pgtable.h, line 284 (as a function)
- arch/csky/include/asm/pgtable.h, line 158 (as a function)
- arch/hexagon/include/asm/pgtable.h, line 290 (as a function)
- arch/loongarch/include/asm/pgtable.h, line 430 (as a function)
- arch/m68k/include/asm/mcf_pgtable.h, line 177 (as a function)
- arch/m68k/include/asm/motorola_pgtable.h, line 150 (as a function)
- arch/m68k/include/asm/sun3_pgtable.h, line 138 (as a function)
- arch/microblaze/include/asm/pgtable.h, line 245 (as a function)
- arch/mips/include/asm/pgtable.h, line 295 (as a function)
- arch/mips/include/asm/pgtable.h, line 359 (as a function)
- arch/nios2/include/asm/pgtable.h, line 110 (as a function)
- arch/openrisc/include/asm/pgtable.h, line 202 (as a function)
- arch/parisc/include/asm/pgtable.h, line 311 (as a function)
- arch/powerpc/include/asm/book3s/32/pgtable.h, line 459 (as a function)
- arch/powerpc/include/asm/book3s/64/pgtable.h, line 573 (as a function)
- arch/powerpc/include/asm/nohash/32/pte-8xx.h, line 87 (as a function)
- arch/powerpc/include/asm/nohash/pgtable.h, line 179 (as a function)
- arch/riscv/include/asm/pgtable.h, line 407 (as a function)
- arch/s390/include/asm/pgtable.h, line 1069 (as a function)
- arch/sparc/include/asm/pgtable_32.h, line 219 (as a function)
- arch/sparc/include/asm/pgtable_64.h, line 535 (as a function)
- arch/um/include/asm/pgtable.h, line 162 (as a function)
- arch/x86/include/asm/pgtable.h, line 401 (as a function)
- arch/xtensa/include/asm/pgtable.h, line 250 (as a function)
Referenced in 32 files:
- arch/arc/include/asm/hugepage.h, line 30
- arch/arm64/include/asm/pgtable.h
- arch/arm64/mm/hugetlbpage.c, line 471
- arch/m68k/include/asm/mmu_context.h, line 148
- arch/m68k/mm/mcfmmu.c, line 126
- arch/parisc/include/asm/pgtable.h, line 460
- arch/parisc/mm/hugetlbpage.c, line 146
- arch/powerpc/include/asm/book3s/64/pgtable.h
- arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h
- arch/powerpc/include/asm/nohash/pgtable.h, line 178
- arch/riscv/include/asm/pgtable.h
- arch/riscv/kvm/mmu.c, line 68
- arch/riscv/mm/hugetlbpage.c, line 340
- arch/s390/include/asm/hugetlb.h, line 77
- arch/s390/include/asm/pgtable.h, line 1297
- arch/s390/mm/pageattr.c, line 92
- arch/sparc/include/asm/hugetlb.h, line 37
- arch/sparc/include/asm/pgtable_64.h, line 740
- arch/x86/include/asm/pgtable.h
- arch/x86/xen/mmu_pv.c, line 207
- arch/xtensa/include/asm/pgtable.h, line 329
- fs/proc/task_mmu.c, line 1728
- include/asm-generic/hugetlb.h, line 26
- include/linux/pgtable.h, line 1050
- mm/debug_vm_pgtable.c
- mm/hugetlb.c, line 4836
- mm/internal.h, line 381
- mm/kasan/init.c, line 100
- mm/ksm.c, line 1369
- mm/mapping_dirty_helpers.c, line 43
- mm/memory.c, line 1192
- mm/rmap.c, line 1143
Smatch caller information:
mm/madvise.c __pte_batch_clear_ignored() -> pte_wrprotect()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pte | $0 [m] |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| LOCK2 | ptl | ||
| HALF_LOCKED2 | &mm->mmap_lock |
mm/huge_memory.c pte_mkuffd() -> pte_wrprotect()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| LOCK2 | rcu_read | ||
| HALF_LOCKED2 | &vma->vm_private_data->rw_sema | ||
| HALF_LOCKED2 | ptl |
mm/userfaultfd.c pte_mkuffd() -> pte_wrprotect()
| Type | Parameter | Key | Value |
|---|---|---|---|
| HALF_LOCKED2 | &ctx->map_changing_lock | ||
| HALF_LOCKED2 | &state.ctx->map_changing_lock | ||
| HALF_LOCKED2 | rcu_read | ||
| TYPE_LOCK | (struct userfaultfd_ctx)->map_changing_lock |
mm/swapfile.c pte_mkuffd() -> pte_wrprotect()
| Type | Parameter | Key | Value |
|---|---|---|---|
| CAPABLE | 0 | 21 | |
| LOCK2 | &mm->mmap_lock | ||
| LOCK2 | ptl | ||
| TYPE_LOCK | (struct mm_struct)->mmap_lock |
mm/kasan/init.c zero_pte_populate() -> pte_wrprotect()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pte | r pfn_pte |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | irq |
fs/proc/task_mmu.c clear_soft_dirty() -> pte_wrprotect()
| 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 |
fs/proc/task_mmu.c huge_pte_wrprotect() -> pte_wrprotect()
| 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 | ||
| LOCK2 | ptl | ||
| TYPE_LOCK | (struct address_space)->i_mmap_rwsem |
fs/proc/task_mmu.c pte_mkuffd() -> pte_wrprotect()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| LOCK2 | ptl | ||
| HALF_LOCKED2 | &vma->vm_file->f_mapping->i_mmap_rwsem |
mm/rmap.c __pte_batch_clear_ignored() -> pte_wrprotect()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pte | $0 [m] |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &anon_vma->root->rwsem | ||
| HALF_LOCKED2 | &folio->private->lock |
mm/rmap.c page_vma_mkclean_one() -> pte_wrprotect()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pte | r ptep_clear_flush |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &((&xas)->xa)->xa_lock | ||
| HALF_LOCKED2 | &mapping->i_mmap_rwsem |
mm/util.c __pte_batch_clear_ignored() -> pte_wrprotect()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pte | $0 [m] |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &folio->private->lock | ||
| HALF_LOCKED2 | ptl | ||
| HALF_LOCKED2 | rcu_read |
mm/mprotect.c __pte_batch_clear_ignored() -> pte_wrprotect()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pte | $0 [m] |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| LOCK2 | ptl | ||
| HALF_LOCKED2 | &mm->mmap_lock |
mm/mprotect.c pte_mkuffd() -> pte_wrprotect()
| Type | Parameter | Key | Value |
|---|---|---|---|
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| LOCK2 | ptl | ||
| HALF_LOCKED2 | &mm->mmap_lock |
mm/hugetlb.c huge_pte_wrprotect() -> pte_wrprotect()
| 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 | src_ptl |
mm/hugetlb.c make_huge_pte() -> pte_wrprotect()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pte | r folio_mk_pte |
| 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 | src_ptl | ||
| HALF_LOCKED2 | vmf->ptl |
mm/hugetlb.c pte_mkuffd() -> pte_wrprotect()
| Type | Parameter | Key | Value |
|---|---|---|---|
| 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 | dst_ptl | ||
| HALF_LOCKED2 | src_ptl | ||
| HALF_LOCKED2 | vmf->ptl |
mm/hugetlb.c ptep_set_wrprotect() -> pte_wrprotect()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| LOCK2 | &mm->mmap_lock | ||
| LOCK2 | &oldmm->mmap_lock | ||
| LOCK2 | src_ptl | ||
| TYPE_LOCK | (struct mm_struct)->mmap_lock |
mm/mremap.c __pte_batch_clear_ignored() -> pte_wrprotect()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pte | $0 [m] |
mm/ksm.c write_protect_page() -> pte_wrprotect()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pte | r pte_mkclean |
| LOCK2 | &mm->mmap_lock | ||
| LOCK2 | global &ksm_thread_mutex | ||
| TYPE_LOCK | (struct mm_struct)->mmap_lock |
mm/vmscan.c __pte_batch_clear_ignored() -> pte_wrprotect()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pte | $0 [m] |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | ptl | ||
| HALF_LOCKED2 | rcu_read |
mm/memory.c __copy_present_ptes() -> pte_wrprotect()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pte | $4 [m] |
| 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 __pte_batch_clear_ignored() -> pte_wrprotect()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pte | $0 [m] |
| 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 pte_mkuffd() -> pte_wrprotect()
| 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 ptep_set_wrprotect() -> pte_wrprotect()
| 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/debug_vm_pgtable.c huge_pte_wrprotect() -> pte_wrprotect()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pte | $0 |
mm/debug_vm_pgtable.c pte_advanced_tests() -> pte_wrprotect()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pte | r pfn_pte |
| HALF_LOCKED2 | ptl |
mm/debug_vm_pgtable.c pte_basic_tests() -> pte_wrprotect()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pte | r pfn_pte |
mm/debug_vm_pgtable.c pte_basic_tests() -> pte_wrprotect()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pte | r pfn_pte |
mm/debug_vm_pgtable.c pte_basic_tests() -> pte_wrprotect()
| Type | Parameter | Key | Value |
|---|
mm/debug_vm_pgtable.c pte_basic_tests() -> pte_wrprotect()
| Type | Parameter | Key | Value |
|---|
mm/debug_vm_pgtable.c pte_basic_tests() -> pte_wrprotect()
| Type | Parameter | Key | Value |
|---|
mm/debug_vm_pgtable.c pte_basic_tests() -> pte_wrprotect()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pte | r pfn_pte |
mm/debug_vm_pgtable.c pte_basic_tests() -> pte_wrprotect()
| Type | Parameter | Key | Value |
|---|
mm/debug_vm_pgtable.c ptep_set_wrprotect() -> pte_wrprotect()
| Type | Parameter | Key | Value |
|---|---|---|---|
| HALF_LOCKED2 | ptl |
mm/migrate.c pte_mkuffd() -> pte_wrprotect()
| Type | Parameter | Key | Value |
|---|---|---|---|
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &anon_vma->root->rwsem | ||
| HALF_LOCKED2 | &folio->private->lock |
mm/mapping_dirty_helpers.c wp_pte() -> pte_wrprotect()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pte | r ptep_modify_prot_start |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &mm->mmap_lock | ||
| HALF_LOCKED2 | ptl |
arch/x86/xen/mmu_pv.c make_lowmem_page_readonly() -> pte_wrprotect()
| Type | Parameter | Key | Value |
|---|---|---|---|
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | irq |
mm/sparse-vmemmap.c ptep_set_wrprotect() -> pte_wrprotect()
| Type | Parameter | Key | Value |
|---|---|---|---|
| RX_PATH |