Defined in 1 files as a prototype:

Defined in 4 files as a macro:

Defined in 7 files as a function:

Referenced in 25 files:

Smatch caller information:

mm/madvise.c folio_pte_batch_flags() -> pte_same()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
LOCK2 ptl
HALF_LOCKED2 &mm->mmap_lock

mm/madvise.c swap_pte_batch() -> pte_same()

Type Parameter Key Value
DATA_SOURCE 0 a r ptep_get
RX_PATH
TASK_NOT_RUNNING
LOCK2 ptl
HALF_LOCKED2 &mm->mmap_lock

arch/x86/mm/init_64.c set_pte_init() -> pte_same()

Type Parameter Key Value
DATA_SOURCE 1 b $1
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 global &init_mm.page_table_lock
HALF_LOCKED2 irq

mm/userfaultfd.c is_pte_pages_stable() -> pte_same()

Type Parameter Key Value
DATA_SOURCE 1 b $3
LOCK2 &ctx->map_changing_lock
LOCK2 rcu_read
TYPE_LOCK (struct userfaultfd_ctx)->map_changing_lock

mm/userfaultfd.c is_pte_pages_stable() -> pte_same()

Type Parameter Key Value
DATA_SOURCE 1 b $2
LOCK2 &ctx->map_changing_lock
LOCK2 rcu_read
TYPE_LOCK (struct userfaultfd_ctx)->map_changing_lock

mm/userfaultfd.c move_pages_ptes() -> pte_same()

Type Parameter Key Value
DATA_SOURCE 1 b r ptep_get
BIT_INFO 0 a 0x0,0x7fffffffffffffff
BIT_INFO 0 a 0x0,0x7fffffffffffffff
LOCK2 &ctx->map_changing_lock
LOCK2 rcu_read
TYPE_LOCK (struct userfaultfd_ctx)->map_changing_lock

mm/userfaultfd.c move_pages_ptes() -> pte_same()

Type Parameter Key Value
DATA_SOURCE 0 a r ptep_get
PREEMPT_ADD <- disables preempt
LOCK2 &ctx->map_changing_lock
LOCK2 rcu_read
LOCK2 src_ptl
TYPE_LOCK (struct userfaultfd_ctx)->map_changing_lock

mm/swapfile.c pte_same_as_swp() -> pte_same()

Type Parameter Key Value
DATA_SOURCE 1 b $1
CAPABLE 0 21
BIT_INFO 1 b 0x0,0x7fffffffffffffff
BIT_INFO 1 b 0x0,0x7fffffffffffffff
LOCK2 &mm->mmap_lock
LOCK2 ptl
TYPE_LOCK (struct mm_struct)->mmap_lock

mm/rmap.c folio_pte_batch_flags() -> pte_same()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &anon_vma->root->rwsem
HALF_LOCKED2 &folio->private->lock

mm/util.c folio_pte_batch_flags() -> pte_same()

Type Parameter Key Value
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &folio->private->lock
HALF_LOCKED2 ptl
HALF_LOCKED2 rcu_read

mm/mprotect.c change_softleaf_pte() -> pte_same()

Type Parameter Key Value
DATA_SOURCE 0 a $3
RX_PATH
TASK_NOT_RUNNING
LOCK2 ptl
HALF_LOCKED2 &mm->mmap_lock

mm/mprotect.c folio_pte_batch_flags() -> pte_same()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
LOCK2 ptl
HALF_LOCKED2 &mm->mmap_lock

mm/hugetlb.c copy_hugetlb_page_range() -> pte_same()

Type Parameter Key Value
DATA_SOURCE 1 b r huge_ptep_get
BIT_INFO 0 a 0x0,0x7fffffffffffffff
BIT_INFO 0 a 0x0,0x7fffffffffffffff
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
LOCK2 &mm->mmap_lock
LOCK2 &oldmm->mmap_lock
LOCK2 src_ptl
TYPE_LOCK (struct mm_struct)->mmap_lock

mm/hugetlb.c hugetlb_change_protection() -> pte_same()

Type Parameter Key Value
DATA_SOURCE 0 a r huge_ptep_get
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
LOCK2 &vma->vm_file->f_mapping->i_mmap_rwsem
HALF_LOCKED2 &dst_mm->mmap_lock
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 _T->lock
TYPE_LOCK (struct address_space)->i_mmap_rwsem

mm/hugetlb.c hugetlb_fault() -> pte_same()

Type Parameter Key Value
DATA_SOURCE 0 a r huge_ptep_get
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock

mm/hugetlb.c hugetlb_no_page() -> pte_same()

Type Parameter Key Value
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 &pool->lock

mm/hugetlb.c hugetlb_pte_stable() -> pte_same()

Type Parameter Key Value
DATA_SOURCE 1 b $4
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 &pool->lock

mm/hugetlb.c hugetlb_wp() -> pte_same()

Type Parameter Key Value
DATA_SOURCE 1 b r huge_ptep_get
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
LOCK2 vmf->ptl
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 &pool->lock

mm/hugetlb.c hugetlb_wp() -> pte_same()

Type Parameter Key Value
DATA_SOURCE 1 b r huge_ptep_get
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
LOCK2 vmf->ptl
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 &pool->lock

mm/mremap.c folio_pte_batch_flags() -> pte_same()

Type Parameter Key Value

mm/ksm.c replace_page() -> pte_same()

Type Parameter Key Value
DATA_SOURCE 1 b $3
LOCK2 &mm->mmap_lock
LOCK2 global &ksm_thread_mutex
LOCK2 ptl
TYPE_LOCK (struct mm_struct)->mmap_lock

mm/vmscan.c folio_pte_batch_flags() -> pte_same()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 ptl
HALF_LOCKED2 rcu_read

mm/memory.c __wp_page_copy_user() -> pte_same()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
LOCK2 vmf->ptl
HALF_LOCKED2 &mm->mmap_lock

mm/memory.c can_swapin_thp() -> pte_same()

Type Parameter Key Value
DATA_SOURCE 0 a r ptep_get
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
LOCK2 ptl
HALF_LOCKED2 &mm->mmap_lock

mm/memory.c do_numa_page() -> pte_same()

Type Parameter Key Value
DATA_SOURCE 0 a r ptep_get
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
LOCK2 rcu_read
LOCK2 vmf->ptl
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 &pool->lock

mm/memory.c do_numa_page() -> pte_same()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
LOCK2 vmf->ptl
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 &pool->lock

mm/memory.c do_swap_page() -> pte_same()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
LOCK2 vmf->ptl
HALF_LOCKED2 &mm->mmap_lock

mm/memory.c do_swap_page() -> pte_same()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
LOCK2 vmf->ptl
HALF_LOCKED2 &mm->mmap_lock

mm/memory.c do_swap_page() -> pte_same()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
LOCK2 vmf->ptl
HALF_LOCKED2 &mm->mmap_lock

mm/memory.c do_swap_page() -> pte_same()

Type Parameter Key Value
DATA_SOURCE 0 a r ptep_get
RX_PATH
TASK_NOT_RUNNING
LOCK2 vmf->ptl
HALF_LOCKED2 &mm->mmap_lock

mm/memory.c do_uffd_rwp() -> pte_same()

Type Parameter Key Value
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
LOCK2 rcu_read
LOCK2 vmf->ptl
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 &pool->lock

mm/memory.c finish_mkwrite_fault() -> pte_same()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
LOCK2 vmf->ptl
HALF_LOCKED2 &mm->mmap_lock

mm/memory.c folio_pte_batch_flags() -> pte_same()

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 handle_pte_fault() -> pte_same()

Type Parameter Key Value
BIT_INFO 1 b 0x0,0x7fffffffffffffff
BIT_INFO 1 b 0x0,0x7fffffffffffffff
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
LOCK2 rcu_read
LOCK2 vmf->ptl
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 &pool->lock

mm/memory.c pte_marker_clear() -> pte_same()

Type Parameter Key Value
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
LOCK2 vmf->ptl
HALF_LOCKED2 &mm->mmap_lock

mm/memory.c remove_device_exclusive_entry() -> pte_same()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
LOCK2 vmf->ptl
HALF_LOCKED2 &mm->mmap_lock

mm/memory.c swap_pte_batch() -> pte_same()

Type Parameter Key Value
DATA_SOURCE 0 a r ptep_get
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 ptl
HALF_LOCKED2 vmf->ptl

mm/memory.c vmf_pte_changed() -> pte_same()

Type Parameter Key Value
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
LOCK2 vmf->ptl

mm/memory.c wp_page_copy() -> pte_same()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
LOCK2 vmf->ptl
HALF_LOCKED2 &mm->mmap_lock

mm/gup.c follow_pfn_pte() -> pte_same()

Type Parameter Key Value
DATA_SOURCE 0 a r ptep_get
DATA_SOURCE 1 b r pte_mkyoung
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
LOCK2 ptl
HALF_LOCKED2 &mm->mmap_lock

mm/debug_vm_pgtable.c pte_basic_tests() -> pte_same()

Type Parameter Key Value
DATA_SOURCE 0 a r pfn_pte
DATA_SOURCE 1 b r pfn_pte

arch/x86/mm/pgtable.c ptep_set_access_flags() -> pte_same()

Type Parameter Key Value
DATA_SOURCE 1 b $3
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 rcu_read
HALF_LOCKED2 vmf->ptl