Defined in 2 files as a macro:

Defined in 2 files as a function:

Referenced in 33 files:

Smatch caller information:

mm/madvise.c guard_install_pmd_entry() -> pmdp_get()

Type Parameter Key Value
PARAM_VALUE 0 pmdp 4096-ptr_max
DATA_SOURCE 0 pmdp $0
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock

mm/madvise.c guard_remove_pmd_entry() -> pmdp_get()

Type Parameter Key Value
PARAM_VALUE 0 pmdp 4096-ptr_max
DATA_SOURCE 0 pmdp $0
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock

mm/huge_memory.c do_huge_pmd_numa_page() -> pmdp_get()

Type Parameter Key Value
PARAM_VALUE 0 pmdp 4096-ptr_max
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 &pool->lock

mm/huge_memory.c do_huge_pmd_numa_page() -> pmdp_get()

Type Parameter Key Value
PARAM_VALUE 0 pmdp 4096-ptr_max
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 &pool->lock

mm/huge_memory.c do_huge_pmd_numa_page() -> pmdp_get()

Type Parameter Key Value
PARAM_VALUE 0 pmdp 4096-ptr_max
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 &pool->lock

mm/huge_memory.c do_huge_pmd_uffd_rwp() -> pmdp_get()

Type Parameter Key Value
PARAM_VALUE 0 pmdp 4096-ptr_max
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 &pool->lock

mm/huge_memory.c do_huge_zero_wp_pmd() -> pmdp_get()

Type Parameter Key Value
PARAM_VALUE 0 pmdp 4096-ptr_max
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 &pool->lock

mm/huge_memory.c pmdp_get_lockless() -> pmdp_get()

Type Parameter Key Value
PARAM_VALUE 0 pmdp 4096-ptr_max
DATA_SOURCE 0 pmdp $0
RX_PATH
TASK_NOT_RUNNING
LOCK2 &mm->mmap_lock
LOCK2 &oldmm->mmap_lock
TYPE_LOCK (struct mm_struct)->mmap_lock

mm/pagewalk.c folio_walk_start() -> pmdp_get()

Type Parameter Key Value
PARAM_VALUE 0 pmdp 4096-ptr_max
DATA_SOURCE 0 pmdp r pmd_offset
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 &split_debug_mutex
HALF_LOCKED2 global &ksm_thread_mutex

mm/pagewalk.c pmdp_get_lockless() -> pmdp_get()

Type Parameter Key Value
PARAM_VALUE 0 pmdp 4096-ptr_max
DATA_SOURCE 0 pmdp $0
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 &split_debug_mutex
HALF_LOCKED2 global &ksm_thread_mutex

mm/userfaultfd.c pmdp_get_lockless() -> pmdp_get()

Type Parameter Key Value
PARAM_VALUE 0 pmdp 4096-ptr_max
DATA_SOURCE 0 pmdp $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &ctx->map_changing_lock
HALF_LOCKED2 &state.ctx->map_changing_lock
HALF_LOCKED2 rcu_read

mm/damon/vaddr.c damon_mkold_pmd_entry() -> pmdp_get()

Type Parameter Key Value
PARAM_VALUE 0 pmdp 4096-ptr_max
DATA_SOURCE 0 pmdp $0
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock

mm/damon/vaddr.c damon_young_pmd_entry() -> pmdp_get()

Type Parameter Key Value
PARAM_VALUE 0 pmdp 4096-ptr_max
DATA_SOURCE 0 pmdp $0
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock

mm/damon/vaddr.c damos_va_filter_young_match() -> pmdp_get()

Type Parameter Key Value
PARAM_VALUE 0 pmdp 4096-ptr_max
DATA_SOURCE 0 pmdp $5
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 ptl

mm/damon/vaddr.c damos_va_migrate_pmd_entry() -> pmdp_get()

Type Parameter Key Value
PARAM_VALUE 0 pmdp 4096-ptr_max
DATA_SOURCE 0 pmdp $0
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock

mm/damon/vaddr.c damos_va_stat_pmd_entry() -> pmdp_get()

Type Parameter Key Value
PARAM_VALUE 0 pmdp 4096-ptr_max
DATA_SOURCE 0 pmdp $0
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock

mm/ptdump.c ptdump_pmd_entry() -> pmdp_get()

Type Parameter Key Value
PARAM_VALUE 0 pmdp 4096-ptr_max
DATA_SOURCE 0 pmdp $0
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock

mm/rmap.c page_vma_mkclean_one() -> pmdp_get()

Type Parameter Key Value
PARAM_VALUE 0 pmdp 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &((&xas)->xa)->xa_lock
HALF_LOCKED2 &mapping->i_mmap_rwsem

mm/rmap.c try_to_migrate_one() -> pmdp_get()

Type Parameter Key Value
PARAM_VALUE 0 pmdp 4096-ptr_max
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/page_vma_mapped.c pmdp_get_lockless() -> pmdp_get()

Type Parameter Key Value
DATA_SOURCE 0 pmdp $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 *ptlp
HALF_LOCKED2 global &ksm_thread_mutex
HALF_LOCKED2 global &mf_mutex
HALF_LOCKED2 ptl
HALF_LOCKED2 rcu_read

mm/mprotect.c pmdp_get_lockless() -> pmdp_get()

Type Parameter Key Value
PARAM_VALUE 0 pmdp 4096-ptr_max
DATA_SOURCE 0 pmdp $0
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &dst_mm->mmap_lock
HALF_LOCKED2 &mm->mmap_lock

mm/ksm.c ksm_next_page_pmd_entry() -> pmdp_get()

Type Parameter Key Value
PARAM_VALUE 0 pmdp 4096-ptr_max
DATA_SOURCE 0 pmdp $0
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock

mm/ksm.c pmdp_get_lockless() -> pmdp_get()

Type Parameter Key Value
PARAM_VALUE 0 pmdp 4096-ptr_max
DATA_SOURCE 0 pmdp $0
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 global &ksm_thread_mutex

mm/migrate_device.c pmdp_get_lockless() -> pmdp_get()

Type Parameter Key Value
PARAM_VALUE 0 pmdp 4096-ptr_max
DATA_SOURCE 0 pmdp $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock

mm/vmscan.c pmdp_get_lockless() -> pmdp_get()

Type Parameter Key Value
PARAM_VALUE 0 pmdp 4096-ptr_max
DATA_SOURCE 0 pmdp $0
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 ptl
HALF_LOCKED2 rcu_read

mm/memory.c __print_bad_page_map_pgtable() -> pmdp_get()

Type Parameter Key Value
PARAM_VALUE 0 pmdp 4096-ptr_max
DATA_SOURCE 0 pmdp r pmd_offset
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 ptl

mm/memory.c follow_pfnmap_start() -> pmdp_get()

Type Parameter Key Value
PARAM_VALUE 0 pmdp 4096-ptr_max
DATA_SOURCE 0 pmdp r pmd_offset
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &iommu->lock
HALF_LOCKED2 &mm->mmap_lock

mm/memory.c pmdp_get_lockless() -> pmdp_get()

Type Parameter Key Value
PARAM_VALUE 0 pmdp 4096-ptr_max
DATA_SOURCE 0 pmdp $0
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock

mm/memory.c zap_empty_pte_table() -> pmdp_get()

Type Parameter Key Value
PARAM_VALUE 0 pmdp 4096-ptr_max
DATA_SOURCE 0 pmdp $1
RX_PATH
TASK_NOT_RUNNING
LOCK2 ptl
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 pml

kernel/events/core.c pmdp_get_lockless() -> pmdp_get()

Type Parameter Key Value
PARAM_VALUE 0 pmdp 4096-ptr_max
DATA_SOURCE 0 pmdp $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
LOCK2 flags
LOCK2 rcu_read

mm/gup.c pmdp_get_lockless() -> pmdp_get()

Type Parameter Key Value
PARAM_VALUE 0 pmdp 4096-u64max
DATA_SOURCE 0 pmdp $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 flags
HALF_LOCKED2 rcu_read

mm/damon/ops-common.c damon_folio_young_one() -> pmdp_get()

Type Parameter Key Value
PARAM_VALUE 0 pmdp 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &anon_vma->root->rwsem
HALF_LOCKED2 &folio->private->lock

mm/damon/ops-common.c damon_pmdp_mkold() -> pmdp_get()

Type Parameter Key Value
PARAM_VALUE 0 pmdp 4096-ptr_max
DATA_SOURCE 0 pmdp $0
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 ptl

mm/pgtable-generic.c pmdp_get_lockless() -> pmdp_get()

Type Parameter Key Value
DATA_SOURCE 0 pmdp $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
LOCK2 rcu_read
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 ptl

mm/mempolicy.c queue_folios_pmd() -> pmdp_get()

Type Parameter Key Value
PARAM_VALUE 0 pmdp 4096-ptr_max
DATA_SOURCE 0 pmdp $0
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock

mm/debug_vm_pgtable.c init_args() -> pmdp_get()

Type Parameter Key Value
PARAM_VALUE 0 pmdp 4096-ptr_max
DATA_SOURCE 0 pmdp r pmd_alloc

mm/debug_vm_pgtable.c pmd_advanced_tests() -> pmdp_get()

Type Parameter Key Value
PARAM_VALUE 0 pmdp 4096-ptr_max
PREEMPT_ADD

mm/debug_vm_pgtable.c pmd_advanced_tests() -> pmdp_get()

Type Parameter Key Value
PARAM_VALUE 0 pmdp 4096-ptr_max
PREEMPT_ADD

mm/debug_vm_pgtable.c pmd_advanced_tests() -> pmdp_get()

Type Parameter Key Value
PARAM_VALUE 0 pmdp 4096-ptr_max
PREEMPT_ADD

mm/debug_vm_pgtable.c pmd_advanced_tests() -> pmdp_get()

Type Parameter Key Value
PARAM_VALUE 0 pmdp 4096-ptr_max
PREEMPT_ADD

mm/debug_vm_pgtable.c pmd_advanced_tests() -> pmdp_get()

Type Parameter Key Value
PARAM_VALUE 0 pmdp 4096-ptr_max
PREEMPT_ADD

mm/debug_vm_pgtable.c pmd_clear_tests() -> pmdp_get()

Type Parameter Key Value
PARAM_VALUE 0 pmdp 4096-ptr_max
PREEMPT_ADD

mm/debug_vm_pgtable.c pmd_clear_tests() -> pmdp_get()

Type Parameter Key Value
PARAM_VALUE 0 pmdp 4096-ptr_max
PREEMPT_ADD

mm/debug_vm_pgtable.c pmd_huge_tests() -> pmdp_get()

Type Parameter Key Value
PARAM_VALUE 0 pmdp 4096-ptr_max
PREEMPT_ADD

mm/debug_vm_pgtable.c pmd_populate_tests() -> pmdp_get()

Type Parameter Key Value
PARAM_VALUE 0 pmdp 4096-ptr_max
PREEMPT_ADD

mm/mapping_dirty_helpers.c pmdp_get_lockless() -> pmdp_get()

Type Parameter Key Value
PARAM_VALUE 0 pmdp 4096-ptr_max
DATA_SOURCE 0 pmdp $0
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock

mm/hmm.c pmdp_get_lockless() -> pmdp_get()

Type Parameter Key Value
PARAM_VALUE 0 pmdp 4096-ptr_max
DATA_SOURCE 0 pmdp $0
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock

mm/khugepaged.c pmdp_get_lockless() -> pmdp_get()

Type Parameter Key Value
PARAM_VALUE 0 pmdp 4096-ptr_max
DATA_SOURCE 0 pmdp $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 ptl
HALF_LOCKED2 rcu_read

mm/page_idle.c page_idle_clear_pte_refs_one() -> pmdp_get()

Type Parameter Key Value
PARAM_VALUE 0 pmdp 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &anon_vma->root->rwsem
HALF_LOCKED2 &folio->private->lock

mm/sparse-vmemmap.c vmemmap_check_pmd() -> pmdp_get()

Type Parameter Key Value
PARAM_VALUE 0 pmdp 4096-ptr_max
DATA_SOURCE 0 pmdp $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 irq

mm/sparse-vmemmap.c vmemmap_populate_hugepages() -> pmdp_get()

Type Parameter Key Value
DATA_SOURCE 0 pmdp r pmd_offset
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 irq