Defined in 1 files as a prototype:

Defined in 2 files as a function:

Referenced in 2 files:

Smatch caller information:

mm/userfaultfd.c mwriteprotect_range() -> uffd_wp_range()

Type Parameter Key Value
PARAM_VALUE 0 dst_vma 4096-ptr_max
PARAM_VALUE 0 dst_vma->flags.__vma_flags 4096-ptr_max
PARAM_VALUE 0 dst_vma->vm_file->f_mapping->i_mmap_rwsem.first_waiter->handoff_set 0-1
PARAM_VALUE 0 dst_vma->vm_file->f_mapping->i_mmap_rwsem.first_waiter->type 0-1
CAPPED_DATA 1 start 1
CAPPED_DATA 1 start 1
CAPPED_DATA 2 len 1
DATA_SOURCE 0 dst_vma r vma_find
DATA_SOURCE 3 enable_wp $3
USER_DATA 1 start 0-18446744073709551614[c]
USER_DATA 3 enable_wp 0-1[c]
NO_OVERFLOW_SIMPLE 1 start
UNITS 1 start unit_byte
UNITS 2 len unit_byte
LOCK2 &ctx->map_changing_lock
LOCK2 &dst_mm->mmap_lock
TYPE_LOCK (struct mm_struct)->mmap_lock
TYPE_LOCK (struct userfaultfd_ctx)->map_changing_lock

fs/proc/task_mmu.c pagemap_scan_pte_hole() -> uffd_wp_range()

Type Parameter Key Value
PARAM_VALUE 0 dst_vma 4096-ptr_max
PARAM_VALUE 0 dst_vma->flags.__vma_flags 4096-ptr_max
PARAM_VALUE 3 enable_wp 1
DATA_SOURCE 1 start $0
NOSPEC 1 start
NOSPEC 1 start
RX_PATH
TASK_NOT_RUNNING
USER_DATA 1 start 0-u64max[c]
NO_OVERFLOW_SIMPLE 0 dst_vma->vm_end
NO_OVERFLOW_SIMPLE 0 dst_vma->vm_pgoff
NO_OVERFLOW_SIMPLE 0 dst_vma->vm_start