Defined in 1 files as a macro:
Defined in 2 files as a function:
Referenced in 18 files:
- arch/arm/mm/fault-armv.c, line 108
- arch/s390/mm/gmap_helpers.c
- include/linux/pgtable.h, line 786
- kernel/events/core.c, line 8548
- mm/gup.c
- mm/hmm.c
- mm/huge_memory.c, line 1919
- mm/khugepaged.c
- mm/ksm.c
- mm/mapping_dirty_helpers.c, line 129
- mm/memory.c
- mm/migrate_device.c, line 238
- mm/mprotect.c, line 529
- mm/page_vma_mapped.c
- mm/pagewalk.c, line 963
- mm/pgtable-generic.c
- mm/userfaultfd.c
- mm/vmscan.c
Smatch caller information:
mm/huge_memory.c copy_huge_pmd() -> pmdp_get_lockless()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | pmdp | 4096-ptr_max |
| DATA_SOURCE | 0 | pmdp | $3 |
| 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_lockless()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | pmdp | 4096-ptr_max |
| DATA_SOURCE | 0 | pmdp | r pmd_offset |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &mm->mmap_lock | ||
| HALF_LOCKED2 | &split_debug_mutex | ||
| HALF_LOCKED2 | global &ksm_thread_mutex |
mm/userfaultfd.c is_pte_pages_stable() -> pmdp_get_lockless()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | pmdp | 4096-ptr_max |
| DATA_SOURCE | 0 | pmdp | $4 |
| LOCK2 | &ctx->map_changing_lock | ||
| LOCK2 | rcu_read | ||
| TYPE_LOCK | (struct userfaultfd_ctx)->map_changing_lock |
mm/userfaultfd.c mfill_establish_pmd() -> pmdp_get_lockless()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | pmdp | 4096-ptr_max |
| DATA_SOURCE | 0 | pmdp | r mm_alloc_pmd |
| LOCK2 | &state.ctx->map_changing_lock | ||
| HALF_LOCKED2 | &state->ctx->map_changing_lock | ||
| TYPE_LOCK | (struct userfaultfd_ctx)->map_changing_lock |
mm/userfaultfd.c mfill_establish_pmd() -> pmdp_get_lockless()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | pmdp | 4096-ptr_max |
| DATA_SOURCE | 0 | pmdp | r mm_alloc_pmd |
| LOCK2 | &state.ctx->map_changing_lock | ||
| HALF_LOCKED2 | &state->ctx->map_changing_lock | ||
| TYPE_LOCK | (struct userfaultfd_ctx)->map_changing_lock |
mm/userfaultfd.c move_pages() -> pmdp_get_lockless()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | pmdp | 4096-ptr_max |
| DATA_SOURCE | 0 | pmdp | r mm_alloc_pmd |
| LOCK2 | &ctx->map_changing_lock | ||
| TYPE_LOCK | (struct userfaultfd_ctx)->map_changing_lock |
mm/userfaultfd.c userfaultfd_must_wait() -> pmdp_get_lockless()
| 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 |
mm/page_vma_mapped.c map_pte() -> pmdp_get_lockless()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | pmdp | 4096-ptr_max |
| PREEMPT_ADD | <- disables preempt | ||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| LOCK2 | *ptlp | ||
| LOCK2 | rcu_read | ||
| HALF_LOCKED2 | &mm->mmap_lock | ||
| HALF_LOCKED2 | global &ksm_thread_mutex | ||
| HALF_LOCKED2 | global &mf_mutex |
mm/page_vma_mapped.c page_vma_mapped_walk() -> pmdp_get_lockless()
| Type | Parameter | Key | Value |
|---|---|---|---|
| DATA_SOURCE | 0 | pmdp | r pmd_offset |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &mm->mmap_lock | ||
| HALF_LOCKED2 | global &ksm_thread_mutex | ||
| HALF_LOCKED2 | global &mf_mutex | ||
| HALF_LOCKED2 | rcu_read |
mm/page_vma_mapped.c page_vma_mapped_walk() -> pmdp_get_lockless()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | pmdp | 0,4096-ptr_max |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| LOCK2 | ptl | ||
| HALF_LOCKED2 | &mm->mmap_lock | ||
| HALF_LOCKED2 | global &ksm_thread_mutex | ||
| HALF_LOCKED2 | global &mf_mutex | ||
| HALF_LOCKED2 | rcu_read |
mm/mprotect.c change_pmd_range() -> pmdp_get_lockless()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | pmdp | 4096-ptr_max |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &dst_mm->mmap_lock | ||
| HALF_LOCKED2 | &mm->mmap_lock | ||
| HALF_LOCKED2 | _T->lock |
mm/ksm.c ksm_next_page_pmd_entry() -> pmdp_get_lockless()
| 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/ksm.c replace_page() -> pmdp_get_lockless()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | pmdp | 4096-ptr_max |
| DATA_SOURCE | 0 | pmdp | r mm_find_pmd |
| LOCK2 | &mm->mmap_lock | ||
| LOCK2 | global &ksm_thread_mutex | ||
| TYPE_LOCK | (struct mm_struct)->mmap_lock |
mm/migrate_device.c migrate_vma_collect_huge_pmd() -> pmdp_get_lockless()
| 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/vmscan.c walk_pmd_range() -> pmdp_get_lockless()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | pmdp | 4096-ptr_max |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &mm->mmap_lock |
mm/vmscan.c walk_pte_range() -> pmdp_get_lockless()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | pmdp | 8733173040072495104 |
| DATA_SOURCE | 0 | pmdp | $0 |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| LOCK2 | ptl | ||
| LOCK2 | rcu_read | ||
| HALF_LOCKED2 | &mm->mmap_lock |
mm/memory.c __handle_mm_fault() -> pmdp_get_lockless()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | pmdp | 4096-ptr_max |
| DATA_SOURCE | 0 | pmdp | r pmd_alloc |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &mm->mmap_lock |
mm/memory.c follow_pfnmap_start() -> pmdp_get_lockless()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | pmdp | 4096-ptr_max |
| DATA_SOURCE | 0 | pmdp | r pmd_offset |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &iommu->lock | ||
| HALF_LOCKED2 | &mm->mmap_lock |
kernel/events/core.c perf_get_pgtable_size() -> pmdp_get_lockless()
| 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 | |||
| LOCK2 | flags | ||
| LOCK2 | rcu_read |
mm/gup.c follow_pmd_mask() -> pmdp_get_lockless()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | pmdp | 4096-ptr_max |
| DATA_SOURCE | 0 | pmdp | r pmd_offset |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &mm->mmap_lock |
mm/gup.c gup_fast_pmd_leaf() -> pmdp_get_lockless()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | pmdp | 4096-ptr_max |
| DATA_SOURCE | 0 | pmdp | $1 |
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| LOCK2 | flags |
mm/gup.c gup_fast_pmd_range() -> pmdp_get_lockless()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | pmdp | 4096-u64max |
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| LOCK2 | flags |
mm/gup.c gup_fast_pte_range() -> pmdp_get_lockless()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | pmdp | 4096-ptr_max |
| DATA_SOURCE | 0 | pmdp | $1 |
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| LOCK2 | flags | ||
| LOCK2 | rcu_read |
mm/pgtable-generic.c __pte_offset_map() -> pmdp_get_lockless()
| 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 | flags |
mm/pgtable-generic.c pte_offset_map_lock() -> pmdp_get_lockless()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | pmdp | 4096-ptr_max |
| DATA_SOURCE | 0 | pmdp | $1 |
| PREEMPT_ADD | <- disables preempt | ||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| LOCK2 | ptl | ||
| LOCK2 | rcu_read | ||
| HALF_LOCKED2 | &mm->mmap_lock | ||
| HALF_LOCKED2 | &mm->mmap_lock | ||
| HALF_LOCKED2 | &oldmm->mmap_lock | ||
| HALF_LOCKED2 | &state.ctx->map_changing_lock | ||
| HALF_LOCKED2 | &vma->anon_vma->root->rwsem | ||
| HALF_LOCKED2 | global &ksm_thread_mutex |
mm/mapping_dirty_helpers.c wp_clean_pmd_entry() -> pmdp_get_lockless()
| 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 hmm_vma_walk_pmd() -> pmdp_get_lockless()
| 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 hmm_vma_walk_pmd() -> pmdp_get_lockless()
| 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 check_pmd_state() -> pmdp_get_lockless()
| 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 | &mapping->i_mmap_rwsem | ||
| HALF_LOCKED2 | &mm->mmap_lock |
mm/khugepaged.c try_collapse_pte_mapped_thp() -> pmdp_get_lockless()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | pmdp | 4096-ptr_max |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| LOCK2 | rcu_read | ||
| HALF_LOCKED2 | &mm->mmap_lock | ||
| HALF_LOCKED2 | &mm->mmap_lock | ||
| HALF_LOCKED2 | ptl |
mm/khugepaged.c try_collapse_pte_mapped_thp() -> pmdp_get_lockless()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | pmdp | 4096-ptr_max |
| PREEMPT_ADD | <- disables preempt | ||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| LOCK2 | ptl | ||
| LOCK2 | rcu_read | ||
| HALF_LOCKED2 | &mm->mmap_lock | ||
| HALF_LOCKED2 | &mm->mmap_lock |