Defined in 1 files as a prototype:
Referenced in 14 files:
- drivers/gpu/drm/amd/amdkfd/kfd_svm.c
- drivers/gpu/drm/drm_gpusvm.c
- drivers/gpu/drm/radeon/radeon_vm.c, line 523
- drivers/iommu/iommufd/io_pagetable.c
- drivers/iommu/iommufd/ioas.c, line 141
- drivers/iommu/iommufd/pages.c
- drivers/iommu/virtio-iommu.c, line 346
- drivers/vfio/vfio_main.c, line 1173
- fs/fuse/dax.c, line 222
- lib/interval_tree.c, line 14
- lib/interval_tree_test.c
- mm/memory-failure.c, line 2237
- mm/mmu_notifier.c
- virt/kvm/kvm_main.c, line 1548
Smatch caller information:
drivers/gpu/drm/radeon/radeon_vm.c radeon_vm_bo_set_addr() -> interval_tree_insert()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | node | 4096-ptr_max |
| PARAM_VALUE | 0 | node->last | 0,256-4503599627370495 |
| PARAM_VALUE | 0 | node->start | 0,256,2048-4503599627370495 |
| PARAM_VALUE | 1 | root | 4096-ptr_max |
| NOSPEC | 0 | node->start | |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| USER_DATA | 0 | node->start | 2048-524287[c] |
| LOCK2 | &vm->mutex | ||
| HALF_LOCKED2 | rbo->tbo.base.resv | ||
| HALF_LOCKED2 | rdev->ring_tmp_bo.bo->tbo.base.resv | ||
| TYPE_LOCK | (struct radeon_vm)->mutex |
drivers/vfio/vfio_main.c vfio_ioctl_device_feature_logging_start() -> interval_tree_insert()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 1 | root | 1813734410200309760 |
| NOCHECK_CALL |
drivers/iommu/iommufd/io_pagetable.c iopt_area_split() -> interval_tree_insert()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | node | 4096-ptr_max |
| PARAM_VALUE | 0 | node->last | 0-18446744073709551614 |
| PARAM_VALUE | 1 | root | 4096-ptr_max |
| NOCHECK_CALL | |||
| LOCK2 | &iopt->iova_rwsem | ||
| LOCK2 | &pages->mutex | ||
| TYPE_LOCK | (struct io_pagetable)->iova_rwsem | ||
| TYPE_LOCK | (struct iopt_pages)->mutex |
drivers/iommu/iommufd/io_pagetable.c iopt_area_split() -> interval_tree_insert()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | node | 4096-ptr_max |
| PARAM_VALUE | 0 | node->last | 0-18446744073709551614 |
| PARAM_VALUE | 1 | root | 4096-ptr_max |
| PARAM_VALUE | 1 | root->rb_leftmost | 4096-ptr_max |
| PARAM_VALUE | 1 | root->rb_root.rb_node | 4096-ptr_max |
| NOCHECK_CALL | |||
| LOCK2 | &iopt->iova_rwsem | ||
| LOCK2 | &pages->mutex | ||
| TYPE_LOCK | (struct io_pagetable)->iova_rwsem | ||
| TYPE_LOCK | (struct iopt_pages)->mutex |
drivers/iommu/iommufd/io_pagetable.c iopt_area_split() -> interval_tree_insert()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | node | 4096-ptr_max |
| PARAM_VALUE | 1 | root | 4096-ptr_max |
| NOCHECK_CALL | |||
| LOCK2 | &iopt->iova_rwsem | ||
| LOCK2 | &pages->mutex | ||
| TYPE_LOCK | (struct io_pagetable)->iova_rwsem | ||
| TYPE_LOCK | (struct iopt_pages)->mutex |
drivers/iommu/iommufd/io_pagetable.c iopt_fill_domain() -> interval_tree_insert()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | node | 48,4096-ptr_max |
| PARAM_VALUE | 1 | root | 4096-ptr_max |
| NOCHECK_CALL | |||
| LOCK2 | &ioas->mutex | ||
| LOCK2 | &iopt->domains_rwsem | ||
| LOCK2 | &iopt->iova_rwsem | ||
| LOCK2 | _T->lock | ||
| TYPE_LOCK | (struct io_pagetable)->domains_rwsem | ||
| TYPE_LOCK | (struct io_pagetable)->iova_rwsem | ||
| TYPE_LOCK | (struct iommufd_ioas)->mutex |
drivers/iommu/iommufd/io_pagetable.c iopt_insert_area() -> interval_tree_insert()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | node | 4096-ptr_max |
| PARAM_VALUE | 1 | root | 4096-ptr_max |
| NOCHECK_CALL | |||
| USER_DATA | 0 | node->__subtree_last | 0-u64max[c] |
| USER_DATA | 0 | node->start | 0-u64max |
| HALF_LOCKED2 | &iopt->iova_rwsem | ||
| HALF_LOCKED2 | &iopt->iova_rwsem | ||
| HALF_LOCKED2 | &pages->mutex | ||
| TYPE_LOCK | (struct io_pagetable)->iova_rwsem |
drivers/iommu/iommufd/io_pagetable.c iopt_reserve_iova() -> interval_tree_insert()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | node | 4096-ptr_max |
| PARAM_VALUE | 1 | root | 4096-ptr_max |
| NOCHECK_CALL | |||
| USER_DATA | 0 | node->start | 0-u64max[u] |
| HALF_LOCKED2 | &igroup->lock | ||
| HALF_LOCKED2 | &ioas->iopt.iova_rwsem | ||
| HALF_LOCKED2 | &ioas->mutex | ||
| HALF_LOCKED2 | &iopt->domains_rwsem | ||
| HALF_LOCKED2 | &iopt->iova_rwsem | ||
| TYPE_LOCK | (struct io_pagetable)->iova_rwsem |
drivers/iommu/iommufd/pages.c iopt_area_add_access() -> interval_tree_insert()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | node | 4096-ptr_max |
| PARAM_VALUE | 1 | root | 4096-ptr_max |
| NOCHECK_CALL | |||
| LOCK2 | &access->ioas_lock | ||
| LOCK2 | &iopt->iova_rwsem | ||
| LOCK2 | &pages->mutex | ||
| HALF_LOCKED2 | &staccess->lock | ||
| HALF_LOCKED2 | &vgpu->cache_lock | ||
| TYPE_LOCK | (struct io_pagetable)->iova_rwsem | ||
| TYPE_LOCK | (struct iommufd_access)->ioas_lock | ||
| TYPE_LOCK | (struct iopt_pages)->mutex |
drivers/iommu/iommufd/pages.c iopt_area_fill_domains() -> interval_tree_insert()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | node | 4096-ptr_max |
| PARAM_VALUE | 1 | root | 4096-ptr_max |
| NOCHECK_CALL | |||
| LOCK2 | &iopt->domains_rwsem | ||
| LOCK2 | &pages->mutex | ||
| TYPE_LOCK | (struct io_pagetable)->domains_rwsem | ||
| TYPE_LOCK | (struct iopt_pages)->mutex |
drivers/iommu/virtio-iommu.c viommu_add_mapping() -> interval_tree_insert()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | node | 4096-ptr_max |
| PARAM_VALUE | 1 | root | 4096-ptr_max |
| PREEMPT_ADD | <- disables preempt | ||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| LOCK2 | &vdomain->mappings_lock | ||
| LOCK2 | irqflags | ||
| HALF_LOCKED2 | &group->mutex | ||
| TYPE_LOCK | (struct viommu_domain)->mappings_lock |
drivers/gpu/drm/drm_gpusvm.c drm_gpusvm_notifier_insert() -> interval_tree_insert()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | node | 4096-ptr_max |
| PARAM_VALUE | 1 | root | 4096-ptr_max |
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| LOCK2 | &mm->mmap_lock | ||
| LOCK2 | &vm->lock | ||
| HALF_LOCKED2 | &pool->lock | ||
| TYPE_LOCK | (struct mm_struct)->mmap_lock | ||
| TYPE_LOCK | (struct xe_vm)->lock |
drivers/gpu/drm/drm_gpusvm.c drm_gpusvm_range_insert() -> interval_tree_insert()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | node | 4096-ptr_max |
| PARAM_VALUE | 0 | node->last | 0-9223372036854775805,u64max |
| PARAM_VALUE | 0 | node->start | 0-9223372036854775806 |
| PARAM_VALUE | 1 | root | 4096-ptr_max |
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| LOCK2 | &(notifier->gpusvm)->notifier_lock | ||
| LOCK2 | &mm->mmap_lock | ||
| LOCK2 | &vm->lock | ||
| HALF_LOCKED2 | &pool->lock | ||
| TYPE_LOCK | (struct mm_struct)->mmap_lock | ||
| TYPE_LOCK | (struct xe_vm)->lock |
fs/fuse/dax.c fuse_setup_one_mapping() -> interval_tree_insert()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | node | 4096-ptr_max |
| PARAM_VALUE | 0 | node->last | 0-4398046511103,18446739675663040512-u64max |
| PARAM_VALUE | 0 | node->start | 0-4398046511103,18446739675663040512-u64max |
| PARAM_VALUE | 1 | root | 4096-ptr_max |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| USER_DATA | 0 | node->last | 0-4398046511103,18446739675663040512-u64max[c] |
| LOCK2 | &fi->dax->sem | ||
| HALF_LOCKED2 | &inode->i_rwsem | ||
| TYPE_LOCK | (struct fuse_inode_dax)->sem |
lib/interval_tree_test.c basic_check() -> interval_tree_insert()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | node | 0-ptr_max |
| PARAM_VALUE | 1 | root | 5990125474845216768 |
| NOCHECK_CALL |
lib/interval_tree_test.c intersection_range_check() -> interval_tree_insert()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | node | 0-ptr_max |
| PARAM_VALUE | 1 | root | 5990125474845216768 |
| NOCHECK_CALL |
lib/interval_tree_test.c search_check() -> interval_tree_insert()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | node | 0-ptr_max |
| PARAM_VALUE | 1 | root | 5990125474845216768 |
| NOCHECK_CALL |
lib/interval_tree_test.c span_iteration_check() -> interval_tree_insert()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | node | 0-ptr_max |
| PARAM_VALUE | 1 | root | 5990125474845216768 |
| NOCHECK_CALL |
mm/memory-failure.c register_pfn_address_space() -> interval_tree_insert()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | node | 4096-ptr_max |
| PARAM_VALUE | 0 | node->last | 0-9007199254740989,u64max |
| PARAM_VALUE | 0 | node->start | 0-4503599627370495 |
| PARAM_VALUE | 1 | root | 7824638959833919488 |
| NOCHECK_CALL | |||
| LOCK2 | &device->dev_set->lock | ||
| LOCK2 | _T->lock | ||
| HALF_LOCKED2 | &device->group->group_lock | ||
| TYPE_LOCK | (struct vfio_device_set)->lock |
mm/mmu_notifier.c __mmu_interval_notifier_insert() -> interval_tree_insert()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | node | 4096-ptr_max |
| PARAM_VALUE | 1 | root | 4096-ptr_max |
| PREEMPT_ADD | <- disables preempt | ||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| USER_DATA | 0 | node->start | 0-u64max |
| LOCK2 | &subscriptions->lock | ||
| TYPE_LOCK | (struct mmu_notifier_subscriptions)->lock |
mm/mmu_notifier.c __mmu_interval_notifier_insert() -> interval_tree_insert()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | node | 4096-ptr_max |
| PARAM_VALUE | 1 | root | 4096-ptr_max |
| PREEMPT_ADD | <- disables preempt | ||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| USER_DATA | 0 | node->start | 0-u64max |
| LOCK2 | &subscriptions->lock | ||
| TYPE_LOCK | (struct mmu_notifier_subscriptions)->lock |
mm/mmu_notifier.c mn_itree_inv_end() -> interval_tree_insert()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | node | 0,4096-ptr_max |
| PARAM_VALUE | 1 | root | 4096-ptr_max |
| PREEMPT_ADD | <- disables preempt | ||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| LOCK2 | &subscriptions->lock | ||
| HALF_LOCKED2 | &mm->mmap_lock | ||
| TYPE_LOCK | (struct mmu_notifier_subscriptions)->lock |
drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_svm.c svm_range_add_to_svms() -> interval_tree_insert()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | node | 4096-ptr_max |
| PARAM_VALUE | 1 | root | 4096-ptr_max |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| LOCK2 | &mm->mmap_lock | ||
| LOCK2 | &svms->lock | ||
| HALF_LOCKED2 | &process_info->lock | ||
| TYPE_LOCK | (struct mm_struct)->mmap_lock | ||
| TYPE_LOCK | (struct svm_range_list)->lock |
drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_svm.c svm_range_update_notifier_and_interval_tree() -> interval_tree_insert()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | node | 4096-ptr_max |
| PARAM_VALUE | 1 | root | 4096-ptr_max |
| NOCHECK_CALL | |||
| LOCK2 | &mm->mmap_lock | ||
| LOCK2 | &svms->lock | ||
| HALF_LOCKED2 | &pool->lock | ||
| HALF_LOCKED2 | &prange->migrate_mutex | ||
| TYPE_LOCK | (struct mm_struct)->mmap_lock | ||
| TYPE_LOCK | (struct svm_range_list)->lock |
drivers/iommu/iommufd/ioas.c iommufd_ioas_load_iovas() -> interval_tree_insert()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | node | 4096-ptr_max |
| PARAM_VALUE | 0 | node->last | 1-u64max |
| PARAM_VALUE | 0 | node->start | 0-18446744073709551614 |
| PARAM_VALUE | 1 | root | 192845473141481472 |
| DATA_SOURCE | 1 | root | $0 |
| NOSPEC | 0 | node->last | |
| NOSPEC | 0 | node->start | |
| NOCHECK_CALL | |||
| USER_DATA | 0 | node->last | 1-u64max[c] |
| USER_DATA | 0 | node->start | 0-18446744073709551614[c] |
arch/x86/kvm/../../../virt/kvm/kvm_main.c kvm_replace_memslot() -> interval_tree_insert()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | node | 4096-ptr_max |
| PARAM_VALUE | 1 | root | 4096-ptr_max |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| HALF_LOCKED2 | &kvm->lock | ||
| HALF_LOCKED2 | &kvm->slots_arch_lock | ||
| HALF_LOCKED2 | &kvm->slots_lock | ||
| HALF_LOCKED2 | _T->lock |