Documented in 1 files:

Defined in 1 files as a prototype:

Defined in 3 files as a function:

Referenced in 12 files:

Smatch caller information:

mm/mmap.c do_mmap() -> find_vma_intersection()

Type Parameter Key Value
PARAM_VALUE 0 mm 4096-ptr_max
PARAM_VALUE 0 mm->map_count s32min-65530
PARAM_VALUE 1 start_addr 0-18446744073709547520
CAPPED_DATA 1 start_addr 1
CAPPED_DATA 1 start_addr 1
CAPPED_DATA 2 end_addr 1
DATA_SOURCE 1 start_addr r __get_unmapped_area
NOSPEC 1 start_addr
RX_PATH
TASK_NOT_RUNNING
USER_DATA 1 start_addr 0-s32max,18446744071562067968-18446744073709547520
UNITS 0 mm unit_byte
UNITS 1 start_addr unit_byte
UNITS 2 end_addr unit_byte
HALF_LOCKED2 &ctx->ring_lock
HALF_LOCKED2 &mm->mmap_lock

drivers/gpu/drm/drm_gpusvm.c drm_gpusvm_find_vma_start() -> find_vma_intersection()

Type Parameter Key Value
PARAM_VALUE 0 mm 4096-ptr_max
PARAM_VALUE 0 mm->mm_users.counter 0-s32max
PARAM_VALUE 0 mm->mmap_lock.dep_map->name 0-255
PARAM_VALUE 0 mm->mmap_lock.first_waiter->list.next 2212933610777083904
PARAM_VALUE 0 mm->mmap_lock.first_waiter->list.prev 2212933610777083904
PARAM_VALUE 0 mm->mmap_lock.first_waiter->type 0-1
CAPPED_DATA 2 end_addr 1
CAPPED_DATA 2 end_addr 1
DATA_SOURCE 1 start_addr $1
DATA_SOURCE 2 end_addr $2
RX_PATH
TASK_NOT_RUNNING
UNITS 0 mm unit_byte
UNITS 1 start_addr unit_byte
LOCK2 &vm->lock
LOCK2 0 &mm->mmap_lock
TYPE_LOCK (struct mm_struct)->mmap_lock
TYPE_LOCK (struct xe_vm)->lock

mm/mremap.c can_align_down() -> find_vma_intersection()

Type Parameter Key Value
PARAM_VALUE 1 start_addr 0,2097152-u64max
CAPPED_DATA 1 start_addr 1
CAPPED_DATA 1 start_addr 1
BIT_INFO 1 start_addr 0x0,0xffffffffffe00000
BIT_INFO 1 start_addr 0x0,0xffffffffffe00000
USER_DATA 1 start_addr 0,2097152-u64max[c]
NO_OVERFLOW_SIMPLE 2 end_addr
UNITS 0 mm unit_byte
UNITS 1 start_addr unit_byte
UNITS 2 end_addr unit_byte
LOCK2 &mm->mmap_lock
HALF_LOCKED2 &tsk->signal->exec_update_lock
TYPE_LOCK (struct mm_struct)->mmap_lock

mm/mremap.c vma_expandable() -> find_vma_intersection()

Type Parameter Key Value
CAPPED_DATA 1 start_addr 1
CAPPED_DATA 1 start_addr 1
PARAM_COMPARE 1 start_addr <= $2
PARAM_COMPARE 2 end_addr >= $1
PARAM_COMPARE 2 end_addr >= $1
NO_OVERFLOW_SIMPLE 1 start_addr
UNITS 0 mm unit_byte
UNITS 1 start_addr unit_byte
UNITS 2 end_addr unit_byte
LOCK2 &mm->mmap_lock
TYPE_LOCK (struct mm_struct)->mmap_lock

mm/vma.c insert_vm_struct() -> find_vma_intersection()

Type Parameter Key Value
PARAM_VALUE 0 mm 4096-ptr_max
PARAM_VALUE 0 mm->mmap_lock.dep_map->name 0-255
PARAM_VALUE 0 mm->mmap_lock.first_waiter->handoff_set 0-1
PARAM_VALUE 0 mm->mmap_lock.first_waiter->list.next 2624917664208203776
PARAM_VALUE 0 mm->mmap_lock.first_waiter->list.prev 2624917664208203776
PARAM_VALUE 0 mm->mmap_lock.first_waiter->type 0-1
PARAM_VALUE 0 mm->mmap_lock.osq.tail.counter 0-s32max
DATA_SOURCE 0 mm $0
NOSPEC 1 start_addr
NOSPEC 1 start_addr
RX_PATH
TASK_NOT_RUNNING
USER_DATA 1 start_addr 0-u64max
USER_DATA 2 end_addr 0-u64max
UNITS 0 mm unit_byte
UNITS 1 start_addr unit_byte
UNITS 2 end_addr unit_byte
LOCK2 0 &mm->mmap_lock
TYPE_LOCK (struct mm_struct)->mmap_lock

mm/gup.c __mm_populate() -> find_vma_intersection()

Type Parameter Key Value
PARAM_VALUE 0 mm 4096-ptr_max
PARAM_VALUE 0 mm->mmap_lock.dep_map->name 0-255
PARAM_VALUE 0 mm->mmap_lock.first_waiter->list.next 2212933610777083904
PARAM_VALUE 0 mm->mmap_lock.first_waiter->list.prev 2212933610777083904
PARAM_VALUE 0 mm->mmap_lock.first_waiter->type 0-1
PARAM_VALUE 1 start_addr 0-18446744073709551614
PARAM_VALUE 2 end_addr 1-u64max
CAPPED_DATA 1 start_addr 1
CAPPED_DATA 1 start_addr 1
DATA_SOURCE 1 start_addr $0
PARAM_COMPARE 1 start_addr < $2
PARAM_COMPARE 2 end_addr > $1
PARAM_COMPARE 2 end_addr > $1
NOSPEC 1 start_addr
RX_PATH
USER_DATA 1 start_addr 0-s32max[c]
UNITS 0 mm unit_byte
UNITS 1 start_addr unit_byte
UNITS 2 end_addr unit_byte
LOCK2 0 &mm->mmap_lock
TYPE_LOCK (struct mm_struct)->mmap_lock

mm/gup.c __mm_populate() -> find_vma_intersection()

Type Parameter Key Value
PARAM_VALUE 0 mm->mmap_lock.first_waiter->type 0-1
PARAM_VALUE 1 start_addr 0-18446744073709551614
PARAM_VALUE 2 end_addr 1-u64max
CAPPED_DATA 1 start_addr 1
CAPPED_DATA 1 start_addr 1
PARAM_COMPARE 1 start_addr < $2
PARAM_COMPARE 2 end_addr > $1
PARAM_COMPARE 2 end_addr > $1
RX_PATH
UNITS 0 mm unit_byte
UNITS 1 start_addr unit_byte
UNITS 2 end_addr unit_byte
HALF_LOCKED2 0 &mm->mmap_lock

drivers/gpu/drm/nouveau/nouveau_svm.c nouveau_svmm_bind() -> find_vma_intersection()

Type Parameter Key Value
PARAM_VALUE 0 mm 4096-ptr_max
PARAM_VALUE 0 mm->mmap_lock.dep_map->name 0-255
PARAM_VALUE 0 mm->mmap_lock.first_waiter->list.next 2212933610777083904
PARAM_VALUE 0 mm->mmap_lock.first_waiter->list.prev 2212933610777083904
PARAM_VALUE 0 mm->mmap_lock.first_waiter->type 0-1
PARAM_VALUE 0 mm->notifier_subscriptions->has_itree 0-1
PARAM_VALUE 0 mm->notifier_subscriptions->invalidate_seq 0-s64max
PARAM_VALUE 1 start_addr 0-18446744073709551614
PARAM_VALUE 2 end_addr 4096-u64max
CAPPED_DATA 1 start_addr 1
CAPPED_DATA 1 start_addr 1
DATA_SOURCE 0 mm r get_task_mm
PARAM_COMPARE 1 start_addr < $2
PARAM_COMPARE 1 start_addr < $2
PARAM_COMPARE 2 end_addr > $1
BIT_INFO 2 end_addr 0x0,0xfffffffffffff000
BIT_INFO 2 end_addr 0x0,0xfffffffffffff000
NOSPEC 1 start_addr
NOSPEC 1 start_addr
USER_DATA 1 start_addr 0,4096-18446744073709551614[c]
USER_DATA 2 end_addr 4096-u64max[c]
UNITS 1 start_addr unit_byte
UNITS 2 end_addr unit_byte
LOCK2 0 &mm->mmap_lock
TYPE_LOCK (struct mm_struct)->mmap_lock

ipc/shm.c do_shmat() -> find_vma_intersection()

Type Parameter Key Value
PARAM_VALUE 1 start_addr 1-u64max
PARAM_VALUE 2 end_addr 1-u64max
CAPPED_DATA 1 start_addr 1
CAPPED_DATA 1 start_addr 1
USER_DATA 1 start_addr 1-s32max[c]
NO_OVERFLOW_SIMPLE 1 start_addr
UNITS 0 mm unit_byte