Documented in 1 files:
Defined in 1 files as a prototype:
Defined in 3 files as a function:
- mm/mmap.c, line 899 (as a function)
- mm/nommu.c, line 625 (as a function)
- tools/testing/vma/include/dup.h, line 1427 (as a function)
Referenced in 12 files:
- arch/arm64/kvm/mmu.c
- arch/powerpc/kvm/book3s_hv_uvmem.c
- arch/riscv/kvm/mmu.c, line 301
- arch/s390/mm/gmap_helpers.c, line 137
- drivers/gpu/drm/drm_gpusvm.c, line 1052
- drivers/gpu/drm/nouveau/nouveau_svm.c, line 179
- ipc/shm.c, line 1660
- mm/gup.c
- mm/mmap.c
- mm/mremap.c
- mm/nommu.c, line 634
- mm/vma.c
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 |