Defined in 20 files as a macro:

Defined in 2 files as a function:

Referenced in 10 files:

Smatch caller information:

mm/madvise.c guard_remove_pte_entry() -> update_mmu_cache()

Type Parameter Key Value
PARAM_VALUE 0 vma 0,4096-ptr_max
PARAM_VALUE 2 ptep 4096-ptr_max
CAPPED_DATA 0 vma 1
DATA_SOURCE 1 addr $1
DATA_SOURCE 2 ptep $0
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
USER_DATA 1 addr 0-u64max[c]
NO_OVERFLOW_SIMPLE 0 vma->vm_end
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 ptl

mm/pagewalk.c walk_pte_range_inner() -> update_mmu_cache()

Type Parameter Key Value
PARAM_VALUE 0 vma 0,4096-ptr_max
PARAM_VALUE 2 ptep 4096-ptr_max
CAPPED_DATA 0 vma 1
DATA_SOURCE 1 addr $1 [m]
DATA_SOURCE 2 ptep $0 [m]
NOSPEC 1 addr
NOSPEC 1 addr
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
USER_DATA 1 addr 0-u64max[c]
NO_OVERFLOW_SIMPLE 0 vma->vm_end
NO_OVERFLOW_SIMPLE 0 vma->vm_start
UNITS 1 addr unit_byte
LOCK2 ptl
HALF_LOCKED2 &mm->mmap_lock

mm/userfaultfd.c mfill_atomic_install_pte() -> update_mmu_cache()

Type Parameter Key Value
PARAM_VALUE 0 vma 4096-ptr_max
PARAM_VALUE 2 ptep 4096-ptr_max
DATA_SOURCE 0 vma $1
DATA_SOURCE 1 addr $2
DATA_SOURCE 2 ptep r pte_offset_map_lock
NOCHECK_CALL
LOCK2 &state.ctx->map_changing_lock
LOCK2 ptl
TYPE_LOCK (struct userfaultfd_ctx)->map_changing_lock

mm/userfaultfd.c mfill_atomic_pte_poison() -> update_mmu_cache()

Type Parameter Key Value
PARAM_VALUE 0 vma 4096-ptr_max
PARAM_VALUE 2 ptep 4096-ptr_max
DATA_SOURCE 2 ptep r pte_offset_map_lock
NOCHECK_CALL
UNITS 1 addr unit_byte
LOCK2 &state.ctx->map_changing_lock
LOCK2 ptl
TYPE_LOCK (struct userfaultfd_ctx)->map_changing_lock

mm/userfaultfd.c mfill_atomic_pte_zeropage() -> update_mmu_cache()

Type Parameter Key Value
PARAM_VALUE 0 vma 4096-ptr_max
PARAM_VALUE 2 ptep 4096-ptr_max
DATA_SOURCE 2 ptep r pte_offset_map_lock
BIT_INFO 0 vma->vm_flags 0x0,0xfffffffffffffff7
NOCHECK_CALL
UNITS 1 addr unit_byte
LOCK2 &state.ctx->map_changing_lock
LOCK2 ptl
TYPE_LOCK (struct userfaultfd_ctx)->map_changing_lock

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

Type Parameter Key Value
PARAM_VALUE 0 vma 4096-ptr_max
PARAM_VALUE 2 ptep 4096-ptr_max
BUF_SIZE 0 vma (-1),1-s32max
BUF_SIZE 0 vma (-1),1-s32max
BUF_SIZE 0 vma->vm_file (-1),4,24,64,168-s32max
BUF_SIZE 0 vma->vm_private_data (-1)-s32max
CAPPED_DATA 0 vma 1
CAPPED_DATA 1 addr 1
CAPPED_DATA 1 addr 1
CAPPED_DATA 2 ptep 1
DATA_SOURCE 0 vma $1
DATA_SOURCE 2 ptep r huge_pte_alloc
NOSPEC 0 vma->vm_pgoff
NOSPEC 0 vma->vm_start
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
USER_DATA 0 vma->vm_end 1073741824-u64max[c]
USER_DATA 0 vma->vm_pgoff 0-4503599627370495[c]
USER_DATA 0 vma->vm_start 0-18446744073709547520
USER_DATA 1 addr 0-u64max[c]
NO_OVERFLOW_SIMPLE 0 vma->vm_file->f_mapping->host->i_bytes
NO_OVERFLOW_SIMPLE 0 vma->vm_pgoff
NO_OVERFLOW_SIMPLE 0 vma->vm_policy->mode
UNITS 1 addr unit_byte
HALF_LOCKED2 &mm->mmap_lock

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

Type Parameter Key Value
PARAM_VALUE 0 vma 4096-ptr_max
PARAM_VALUE 2 ptep 4096-ptr_max
BUF_SIZE 0 vma (-1),1-s32max
BUF_SIZE 0 vma (-1),1-s32max
BUF_SIZE 0 vma->vm_file (-1),4,24,64,168-s32max
BUF_SIZE 0 vma->vm_private_data (-1)-s32max
CAPPED_DATA 0 vma 1
CAPPED_DATA 1 addr 1
CAPPED_DATA 1 addr 1
CAPPED_DATA 2 ptep 1
DATA_SOURCE 0 vma $1
DATA_SOURCE 2 ptep r huge_pte_alloc
NOSPEC 0 vma->vm_pgoff
NOSPEC 0 vma->vm_start
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
USER_DATA 0 vma->vm_end 1073741824-u64max[c]
USER_DATA 0 vma->vm_pgoff 0-4503599627370495[c]
USER_DATA 0 vma->vm_start 0-18446744073709547520
USER_DATA 1 addr 0-u64max[c]
NO_OVERFLOW_SIMPLE 0 vma->vm_file->f_mapping->host->i_bytes
NO_OVERFLOW_SIMPLE 0 vma->vm_pgoff
NO_OVERFLOW_SIMPLE 0 vma->vm_policy->mode
UNITS 1 addr unit_byte
HALF_LOCKED2 &mm->mmap_lock

mm/hugetlb.c hugetlb_mfill_atomic_pte() -> update_mmu_cache()

Type Parameter Key Value
PARAM_VALUE 0 vma 4096-ptr_max
PARAM_VALUE 2 ptep 4096-ptr_max
CAPPED_DATA 0 vma 1
CAPPED_DATA 2 ptep 1
DATA_SOURCE 0 vma $1
DATA_SOURCE 1 addr $2
DATA_SOURCE 2 ptep $0
NOSPEC 1 addr
NOSPEC 1 addr
PREEMPT_ADD <- disables preempt
NOCHECK_CALL
USER_DATA 0 vma->vm_policy->home_node 0-1023
USER_DATA 1 addr 0-18446744073709551614[c]
NO_OVERFLOW_SIMPLE 1 addr
UNITS 1 addr unit_byte
LOCK2 &state.ctx->map_changing_lock
HALF_LOCKED2 &ctx->map_changing_lock
TYPE_LOCK (struct userfaultfd_ctx)->map_changing_lock

mm/hugetlb.c hugetlb_mfill_atomic_pte() -> update_mmu_cache()

Type Parameter Key Value
PARAM_VALUE 0 vma 4096-ptr_max
PARAM_VALUE 1 addr 0-18446744073709551614
PARAM_VALUE 2 ptep 4096-ptr_max
CAPPED_DATA 0 vma 1
CAPPED_DATA 1 addr 1
CAPPED_DATA 1 addr 1
CAPPED_DATA 2 ptep 1
DATA_SOURCE 0 vma $1
DATA_SOURCE 1 addr $2
DATA_SOURCE 2 ptep $0
NOSPEC 1 addr
NOSPEC 1 addr
PREEMPT_ADD <- disables preempt
NOCHECK_CALL
USER_DATA 0 vma->vm_policy->flags 0,24,8192-57368[c]
USER_DATA 0 vma->vm_policy->home_node 0-1023
USER_DATA 1 addr 0-18446744073709551614[c]
NO_OVERFLOW_SIMPLE 1 addr
UNITS 1 addr unit_byte
LOCK2 &state.ctx->map_changing_lock
HALF_LOCKED2 &ctx->map_changing_lock
TYPE_LOCK (struct userfaultfd_ctx)->map_changing_lock

mm/hugetlb.c set_huge_ptep_writable() -> update_mmu_cache()

Type Parameter Key Value
PARAM_VALUE 0 vma 4096-ptr_max
PARAM_VALUE 2 ptep 4096-ptr_max
BUF_SIZE 0 vma (-1),1-s32max
BUF_SIZE 0 vma (-1),1-s32max
CAPPED_DATA 0 vma 1
CAPPED_DATA 2 ptep 1
DATA_SOURCE 0 vma $0
DATA_SOURCE 1 addr $1
DATA_SOURCE 2 ptep $2
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
USER_DATA 1 addr 0-u64max[c]
NO_OVERFLOW_SIMPLE 0 vma->vm_pgoff
UNITS 1 addr unit_byte
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 &pool->lock

mm/migrate_device.c migrate_vma_insert_page() -> update_mmu_cache()

Type Parameter Key Value
PARAM_VALUE 0 vma 4096-ptr_max
PARAM_VALUE 2 ptep 4096-ptr_max
CAPPED_DATA 0 vma 1
DATA_SOURCE 1 addr $1
DATA_SOURCE 2 ptep r pte_offset_map_lock
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
NO_OVERFLOW_SIMPLE 0 vma->vm_end
NO_OVERFLOW_SIMPLE 0 vma->vm_policy->mode
UNITS 1 addr unit_byte
LOCK2 ptl
HALF_LOCKED2 &drm->dmem->mutex

mm/memory.c do_anonymous_page() -> update_mmu_cache()

Type Parameter Key Value
PARAM_VALUE 0 vma 4096-ptr_max
PARAM_VALUE 1 addr 0,4096-u64max
PARAM_VALUE 2 ptep 4096-ptr_max
BUF_SIZE 0 vma (-1),1-s32max
BUF_SIZE 0 vma (-1),1-s32max
CAPPED_DATA 1 addr 1
CAPPED_DATA 1 addr 1
DATA_SOURCE 2 ptep r pte_offset_map_lock
BIT_INFO 0 vma->vm_flags 0x0,0xfffffffffffffff7
NOSPEC 1 addr
NOSPEC 1 addr
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
USER_DATA 1 addr 0,4096-u64max[c]
NO_OVERFLOW_SIMPLE 0 vma->vm_pgoff
UNITS 1 addr unit_byte
LOCK2 vmf->ptl
HALF_LOCKED2 &mm->mmap_lock

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

Type Parameter Key Value
PARAM_VALUE 0 vma 4096-ptr_max
PARAM_VALUE 1 addr 0,4096-u64max
PARAM_VALUE 2 ptep 4096-ptr_max
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
USER_DATA 1 addr 0,4096-u64max[c]
UNITS 1 addr unit_byte
LOCK2 rcu_read
LOCK2 vmf->ptl
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 &pool->lock

mm/memory.c insert_page_into_pte_locked() -> update_mmu_cache()

Type Parameter Key Value
PARAM_VALUE 0 vma 4096-ptr_max
PARAM_VALUE 1 addr 0-18446744073709551614
PARAM_VALUE 2 ptep 4096-ptr_max
BUF_SIZE 0 vma (-1),1-s32max
BUF_SIZE 0 vma (-1),1-s32max
BUF_SIZE 0 vma->vm_file (-1)-s32max
BUF_SIZE 0 vma->vm_ops (-1),144
BUF_SIZE 0 vma->vm_private_data (-1),1-s32max
CAPPED_DATA 0 vma 1
CAPPED_DATA 0 vma->vm_start 1
CAPPED_DATA 1 addr 1
CAPPED_DATA 1 addr 1
DATA_SOURCE 0 vma $0
DATA_SOURCE 1 addr $2
DATA_SOURCE 2 ptep $1
NOSPEC 0 vma->vm_end
NOSPEC 0 vma->vm_pgoff
NOSPEC 0 vma->vm_start
NOSPEC 1 addr
NOSPEC 1 addr
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
USER_DATA 0 vma->pfnmap_track_ctx->pfn 0-13510803177078779[c]
USER_DATA 0 vma->pfnmap_track_ctx->size 0,4096-u64max[c]
USER_DATA 0 vma->vm_end 4096-u64max[c]
USER_DATA 0 vma->vm_pgoff 0-13510803177078779[c]
USER_DATA 0 vma->vm_start 0-18446744073709547520
USER_DATA 1 addr 0-18446744073709551614[c]
NO_OVERFLOW_SIMPLE 0 vma->vm_file->f_mapping->host->i_size
NO_OVERFLOW_SIMPLE 0 vma->vm_pgoff
NO_OVERFLOW_SIMPLE 0 vma->vm_start
UNITS 1 addr unit_byte

mm/memory.c insert_pfn() -> update_mmu_cache()

Type Parameter Key Value
PARAM_VALUE 0 vma 4096-ptr_max
PARAM_VALUE 1 addr 0-18446744073709551614
PARAM_VALUE 2 ptep 4096-ptr_max
BUF_SIZE 0 vma (-1),1-s32max
BUF_SIZE 0 vma (-1),1-s32max
BUF_SIZE 0 vma->vm_file (-1),1-s32max
BUF_SIZE 0 vma->vm_private_data (-1),1-s32max
CAPPED_DATA 0 vma->vm_start 1
CAPPED_DATA 1 addr 1
CAPPED_DATA 1 addr 1
DATA_SOURCE 0 vma $0
DATA_SOURCE 1 addr $1
DATA_SOURCE 2 ptep r get_locked_pte
NOSPEC 0 vma->vm_pgoff
NOSPEC 0 vma->vm_start
NOSPEC 1 addr
NOSPEC 1 addr
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
USER_DATA 0 vma->vm_end 4096-u64max[c]
USER_DATA 0 vma->vm_pgoff 0-4294967294[c]
USER_DATA 0 vma->vm_start 0-18446744073709547520
USER_DATA 1 addr 0-18446744073709551614[c]
NO_OVERFLOW_SIMPLE 0 vma->vm_pgoff
NO_OVERFLOW_SIMPLE 0 vma->vm_start
UNITS 1 addr unit_byte

mm/memory.c insert_pfn() -> update_mmu_cache()

Type Parameter Key Value
PARAM_VALUE 0 vma 4096-ptr_max
PARAM_VALUE 1 addr 0-18446744073709551614
PARAM_VALUE 2 ptep 4096-ptr_max
BUF_SIZE 0 vma (-1),1-s32max
BUF_SIZE 0 vma (-1),1-s32max
BUF_SIZE 0 vma->vm_file (-1),1-s32max
BUF_SIZE 0 vma->vm_private_data (-1),1-s32max
CAPPED_DATA 0 vma->vm_start 1
CAPPED_DATA 1 addr 1
CAPPED_DATA 1 addr 1
DATA_SOURCE 0 vma $0
DATA_SOURCE 1 addr $1
DATA_SOURCE 2 ptep r get_locked_pte
NOSPEC 0 vma->vm_pgoff
NOSPEC 0 vma->vm_start
NOSPEC 1 addr
NOSPEC 1 addr
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
USER_DATA 0 vma->vm_end 4096-u64max[c]
USER_DATA 0 vma->vm_pgoff 0-4294967294[c]
USER_DATA 0 vma->vm_start 0-18446744073709547520
USER_DATA 1 addr 0-18446744073709551614[c]
NO_OVERFLOW_SIMPLE 0 vma->vm_pgoff
NO_OVERFLOW_SIMPLE 0 vma->vm_start
UNITS 1 addr unit_byte

mm/memory.c restore_exclusive_pte() -> update_mmu_cache()

Type Parameter Key Value
PARAM_VALUE 0 vma 4096-ptr_max
PARAM_VALUE 2 ptep 4096-ptr_max
BUF_SIZE 0 vma (-1),4,24,64,168-s32max
BUF_SIZE 0 vma (-1),4,24,64,168-s32max
DATA_SOURCE 0 vma $0
DATA_SOURCE 1 addr $3
DATA_SOURCE 2 ptep $4
NOSPEC 1 addr
NOSPEC 1 addr
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
USER_DATA 1 addr 0,4096-u64max[c]
NO_OVERFLOW_SIMPLE 0 vma->vm_pgoff
UNITS 1 addr unit_byte
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/gup.c follow_pfn_pte() -> update_mmu_cache()

Type Parameter Key Value
PARAM_VALUE 0 vma 4096-ptr_max
PARAM_VALUE 2 ptep 4096-ptr_max
DATA_SOURCE 0 vma $0
DATA_SOURCE 1 addr $1
DATA_SOURCE 2 ptep $2
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
USER_DATA 1 addr 0-u64max[c]
NO_OVERFLOW_SIMPLE 0 vma->vm_file->f_mapping->host->i_size
UNITS 1 addr unit_byte
LOCK2 ptl
HALF_LOCKED2 &mm->mmap_lock

mm/migrate.c remove_migration_pte() -> update_mmu_cache()

Type Parameter Key Value
PARAM_VALUE 0 vma 4096-ptr_max
PARAM_VALUE 2 ptep 4096-ptr_max
DATA_SOURCE 0 vma $1
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
NO_OVERFLOW_SIMPLE 0 vma->vm_start
HALF_LOCKED2 &anon_vma->root->rwsem
HALF_LOCKED2 &folio->private->lock