Defined in 1 files as a variable:

Defined in 4 files as a prototype:

Defined in 10 files as a macro:

Defined in 6 files as a function:

Defined in 1 files as a externvar:

Referenced in 21 files:

Smatch caller information:

mm/rmap.c make_device_exclusive() -> flush_cache_page()

Type Parameter Key Value
PARAM_VALUE 0 vma 4096-ptr_max
PARAM_VALUE 1 vmaddr 0
PARAM_VALUE 2 pfn 0-12384898975264768,9223396226110586880-u64max
CAPPED_DATA 0 vma->vm_end 1
CAPPED_DATA 0 vma->vm_start 1
PARAM_COMPARE 0 vma->vm_end > $0->vm_start
PARAM_COMPARE 1 vmaddr < $0->vm_end
PARAM_COMPARE 1 vmaddr < $0->vm_end
PARAM_COMPARE 1 vmaddr >= $0->vm_start
PARAM_COMPARE 1 vmaddr >= $0->vm_start
NOSPEC 1 vmaddr
NOSPEC 1 vmaddr
NOCHECK_CALL
USER_DATA 1 vmaddr 0[c]
UNITS 1 vmaddr unit_byte
UNITS 2 pfn unit_page
LOCK2 &mm->mmap_lock
TYPE_LOCK (struct mm_struct)->mmap_lock

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

Type Parameter Key Value
PARAM_VALUE 0 vma 4096-ptr_max
PARAM_VALUE 2 pfn 0-1099511627775
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
UNITS 0 vma unit_byte
HALF_LOCKED2 &((&xas)->xa)->xa_lock
HALF_LOCKED2 &mapping->i_mmap_rwsem

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

Type Parameter Key Value
PARAM_VALUE 0 vma 4096-ptr_max
PARAM_VALUE 2 pfn 0-1099511627775
CAPPED_DATA 2 pfn 1
CAPPED_DATA 2 pfn 1
DATA_SOURCE 0 vma $1
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
NO_OVERFLOW_SIMPLE 0 vma->vm_start
UNITS 1 vmaddr unit_byte
HALF_LOCKED2 &anon_vma->root->rwsem
HALF_LOCKED2 &folio->private->lock
HALF_LOCKED2 &resv_map->rw_sema
HALF_LOCKED2 0 &vma->vm_private_data->rw_sema

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

Type Parameter Key Value
PARAM_VALUE 0 vma 4096-ptr_max
PARAM_VALUE 1 vmaddr 0-18446744073709551601,18446744073709551603-u64max
PARAM_VALUE 2 pfn 0-1099511627775
CAPPED_DATA 0 vma->vm_pgoff 1
DATA_SOURCE 0 vma $0
DATA_SOURCE 1 vmaddr r page_address_in_vma
NOCHECK_CALL
NO_OVERFLOW_SIMPLE 0 vma->vm_start
UNITS 1 vmaddr unit_byte
LOCK2 &mm->mmap_lock
LOCK2 global &ksm_thread_mutex
LOCK2 ptl
TYPE_LOCK (struct mm_struct)->mmap_lock

mm/ksm.c write_protect_page() -> flush_cache_page()

Type Parameter Key Value
PARAM_VALUE 0 vma 4096-ptr_max
PARAM_VALUE 2 pfn 0-12384898975264768,9223396226110586880-u64max
DATA_SOURCE 0 vma $0
NOCHECK_CALL
UNITS 1 vmaddr unit_byte
LOCK2 &mm->mmap_lock
LOCK2 global &ksm_thread_mutex
TYPE_LOCK (struct mm_struct)->mmap_lock

mm/migrate_device.c migrate_vma_collect_pmd() -> flush_cache_page()

Type Parameter Key Value
PARAM_VALUE 0 vma 4096-ptr_max
PARAM_VALUE 2 pfn 0-1099511627775
NOSPEC 1 vmaddr
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
NO_OVERFLOW_SIMPLE 0 vma->vm_end
NO_OVERFLOW_SIMPLE 0 vma->vm_start
UNITS 1 vmaddr unit_byte
LOCK2 ptl
HALF_LOCKED2 &mm->mmap_lock

mm/migrate_device.c migrate_vma_insert_huge_pmd_page() -> flush_cache_page()

Type Parameter Key Value
PARAM_VALUE 0 vma 4096-ptr_max
CAPPED_DATA 0 vma 1
CAPPED_DATA 0 vma->vm_start 1
DATA_SOURCE 1 vmaddr $1
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
NO_OVERFLOW_SIMPLE 0 vma->vm_end
NO_OVERFLOW_SIMPLE 0 vma->vm_pgoff
NO_OVERFLOW_SIMPLE 0 vma->vm_policy->mode
UNITS 1 vmaddr unit_byte
UNITS 2 pfn unit_byte
HALF_LOCKED2 &drm->dmem->mutex

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

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

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

Type Parameter Key Value
PARAM_VALUE 0 vma 4096-ptr_max
PARAM_VALUE 1 vmaddr 0,4096-u64max
PARAM_VALUE 2 pfn 0-1099511627775
BUF_SIZE 0 vma (-1),1-s32max
BUF_SIZE 0 vma (-1),1-s32max
CAPPED_DATA 1 vmaddr 1
CAPPED_DATA 1 vmaddr 1
NOSPEC 1 vmaddr
NOSPEC 1 vmaddr
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
USER_DATA 0 vma->swap_readahead_info.counter 0-s64max[c]
USER_DATA 1 vmaddr 0,4096-u64max[c]
NO_OVERFLOW_SIMPLE 0 vma->vm_pgoff
UNITS 1 vmaddr unit_byte
LOCK2 vmf->ptl
HALF_LOCKED2 &mm->mmap_lock

mm/memory.c wp_page_reuse() -> flush_cache_page()

Type Parameter Key Value
PARAM_VALUE 0 vma 4096-ptr_max
PARAM_VALUE 1 vmaddr 0,4096-u64max
PARAM_VALUE 2 pfn 0-1099511627775
BUF_SIZE 0 vma (-1),1-s32max
BUF_SIZE 0 vma (-1),1-s32max
CAPPED_DATA 1 vmaddr 1
CAPPED_DATA 1 vmaddr 1
NOSPEC 1 vmaddr
NOSPEC 1 vmaddr
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
USER_DATA 0 vma->swap_readahead_info.counter 0-s64max[c]
USER_DATA 1 vmaddr 0,4096-u64max[c]
NO_OVERFLOW_SIMPLE 0 vma->vm_pgoff
UNITS 1 vmaddr unit_byte
LOCK2 vmf->ptl
HALF_LOCKED2 &mm->mmap_lock

kernel/events/uprobes.c __uprobe_write() -> flush_cache_page()

Type Parameter Key Value
PARAM_VALUE 0 vma 4096-ptr_max
PARAM_VALUE 1 vmaddr 0,4096-u64max
PARAM_VALUE 2 pfn 0-1099511627775
CAPPED_DATA 0 vma->vm_end 1
CAPPED_DATA 0 vma->vm_start 1
DATA_SOURCE 0 vma $0
BIT_INFO 1 vmaddr 0x0,0xfffffffffffff000
BIT_INFO 1 vmaddr 0x0,0xfffffffffffff000
NOSPEC 0 vma->vm_pgoff
NOSPEC 0 vma->vm_start
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
USER_DATA 0 vma->shared.rb_subtree_last 0-u64max[u]
USER_DATA 0 vma->vm_pgoff 0-4503599627370495[c]
USER_DATA 0 vma->vm_start 0-s32max,9223372036854775807[c]
NO_OVERFLOW_SIMPLE 0 vma->vm_end
NO_OVERFLOW_SIMPLE 0 vma->vm_pgoff
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 &uprobe->register_rwsem

fs/exec.c flush_arg_page() -> flush_cache_page()

Type Parameter Key Value
PARAM_VALUE 1 vmaddr 0,4096-u64max
PARAM_VALUE 2 pfn 0-12384898975268863,9223396226110586880-u64max
DATA_SOURCE 1 vmaddr $1
BIT_INFO 1 vmaddr 0x0,0xfffffffffffff000
BIT_INFO 1 vmaddr 0x0,0xfffffffffffff000
NOCHECK_CALL