Documented in 1 files:

Defined in 1 files as a function:

Referenced in 61 files:

Smatch caller information:

kernel/exit.c mmgrab_lazy_tlb() -> mmgrab()

Type Parameter Key Value
PARAM_VALUE 0 mm 4096-ptr_max
DATA_SOURCE 0 mm $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
UNITS 0 mm unit_byte
LOCK2 0 &mm->mmap_lock
HALF_LOCKED2 global &system_transition_mutex
TYPE_LOCK (struct mm_struct)->mmap_lock

kernel/trace/trace_events_user.c user_event_mm_alloc() -> mmgrab()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
UNITS 0 mm unit_byte
HALF_LOCKED2 &group->reg_mutex

mm/oom_kill.c __do_sys_process_mrelease() -> mmgrab()

Type Parameter Key Value
PARAM_VALUE 0 mm 1-u64max
NOCHECK_CALL
UNITS 0 mm unit_byte

mm/oom_kill.c __do_sys_process_mrelease() -> mmgrab()

Type Parameter Key Value
PARAM_VALUE 0 mm 1-u64max
NOCHECK_CALL
UNITS 0 mm unit_byte

mm/oom_kill.c __oom_kill_process() -> mmgrab()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
UNITS 0 mm unit_byte
LOCK2 global &oom_lock

mm/oom_kill.c mark_oom_victim() -> mmgrab()

Type Parameter Key Value
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 global &oom_lock
HALF_LOCKED2 &tsk->alloc_lock

drivers/vhost/vhost.c vhost_attach_mm() -> mmgrab()

Type Parameter Key Value
NOCHECK_CALL
UNITS 0 mm unit_byte
HALF_LOCKED2 &n->dev.mutex
TYPE_LOCK (struct vhost_dev)->mutex

mm/userfaultfd.c dup_userfaultfd() -> mmgrab()

Type Parameter Key Value
PARAM_VALUE 0 mm 4096-ptr_max
PARAM_VALUE 0 mm->mm_count.counter 1
CAPPED_DATA 0 mm->mm_id 1
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
UNITS 0 mm unit_byte
LOCK2 &mm->mmap_lock
LOCK2 &oldmm->mmap_lock
TYPE_LOCK (struct mm_struct)->mmap_lock

mm/userfaultfd.c new_userfaultfd() -> mmgrab()

Type Parameter Key Value
NOCHECK_CALL
UNITS 0 mm unit_byte

drivers/usb/gadget/legacy/inode.c ep_aio() -> mmgrab()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
UNITS 0 mm unit_byte
LOCK2 &epdata->lock
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct ep_data)->lock

fs/proc/base.c __set_oom_adj() -> mmgrab()

Type Parameter Key Value
PARAM_VALUE 0 mm 4096-ptr_max
NOCHECK_CALL
UNITS 0 mm unit_byte
LOCK2 global &oom_adj_mutex

fs/proc/base.c proc_mem_open() -> mmgrab()

Type Parameter Key Value
PARAM_VALUE 0 mm 4096-ptr_max
CAPPED_DATA 0 mm 1
DATA_SOURCE 0 mm r mm_access
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL

kernel/kthread.c kthread_use_mm() -> mmgrab()

Type Parameter Key Value
DATA_SOURCE 0 mm $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
UNITS 0 mm unit_byte
HALF_LOCKED2 &access->ioas_lock
HALF_LOCKED2 &iommu->lock
HALF_LOCKED2 &iopt->iova_rwsem
HALF_LOCKED2 &kvm->arch.xen.shinfo_cache.lock
HALF_LOCKED2 &wq->uc_lock

kernel/kthread.c mmgrab_lazy_tlb() -> mmgrab()

Type Parameter Key Value
PARAM_VALUE 0 mm 4096-ptr_max
CAPPED_DATA 0 mm 1
DATA_SOURCE 0 mm $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
UNITS 0 mm unit_byte
LOCK2 &tsk->alloc_lock
LOCK2 irq
HALF_LOCKED2 &access->ioas_lock
HALF_LOCKED2 &iommu->lock
HALF_LOCKED2 &iopt->iova_rwsem
HALF_LOCKED2 &kvm->arch.xen.shinfo_cache.lock
HALF_LOCKED2 &wq->uc_lock
TYPE_LOCK (struct task_struct)->alloc_lock

drivers/accel/amdxdna/amdxdna_ctx.c amdxdna_cmd_submit() -> mmgrab()

Type Parameter Key Value
NOCHECK_CALL
UNITS 0 mm unit_byte
LOCK2 &client->hwctx_srcu
HALF_LOCKED2 &xdna->client_lock
HALF_LOCKED2 &xdna->dev_lock
TYPE_LOCK (struct amdxdna_client)->hwctx_srcu

drivers/iommu/iommufd/pages.c iopt_alloc_pages() -> mmgrab()

Type Parameter Key Value
NOCHECK_CALL
UNITS 0 mm unit_byte

drivers/gpu/drm/drm_gpusvm.c drm_gpusvm_init() -> mmgrab()

Type Parameter Key Value
PARAM_VALUE 0 mm 1-u64max
DATA_SOURCE 0 mm $2
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
UNITS 0 mm unit_byte

io_uring/zcrx.c io_register_zcrx() -> mmgrab()

Type Parameter Key Value
PARAM_VALUE 0 mm 1-u64max
CAPABLE 0 12
NOCHECK_CALL
UNITS 0 mm unit_byte
LOCK2 &ctx->uring_lock
TYPE_LOCK (struct io_ring_ctx)->uring_lock

mm/ksm.c __ksm_enter() -> mmgrab()

Type Parameter Key Value
PARAM_VALUE 0 mm 4096-ptr_max
DATA_SOURCE 0 mm $0
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
UNITS 0 mm unit_byte
HALF_LOCKED2 &oldmm->mmap_lock
HALF_LOCKED2 0 &mm->mmap_lock

drivers/infiniband/core/umem.c __ib_umem_get_va() -> mmgrab()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
UNITS 0 mm unit_byte
HALF_LOCKED2 &context->db_page_mutex

io_uring/io_uring.c io_uring_create() -> mmgrab()

Type Parameter Key Value
NOCHECK_CALL
UNITS 0 mm unit_byte

mm/vmscan.c get_next_mm() -> mmgrab()

Type Parameter Key Value
PARAM_VALUE 0 mm 4096-ptr_max
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &mm_list->lock
TYPE_LOCK (struct lru_gen_mm_list)->lock

drivers/android/binder_alloc.c __binder_alloc_init() -> mmgrab()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
UNITS 0 mm unit_byte

drivers/gpu/drm/xe/xe_sync.c user_fence_create() -> mmgrab()

Type Parameter Key Value
NOCHECK_CALL
UNITS 0 mm unit_byte
HALF_LOCKED2 &vm->lock

drivers/accel/amdxdna/amdxdna_ubuf.c amdxdna_get_ubuf() -> mmgrab()

Type Parameter Key Value
NOCHECK_CALL
UNITS 0 mm unit_byte

drivers/vdpa/vdpa_user/vduse_dev.c vduse_dev_reg_umem() -> mmgrab()

Type Parameter Key Value
NOCHECK_CALL
UNITS 0 mm unit_byte
LOCK2 &dev->domain_lock
TYPE_LOCK (struct vduse_dev)->domain_lock

arch/x86/kernel/cpu/common.c cpu_init() -> mmgrab()

Type Parameter Key Value
PARAM_VALUE 0 mm 7138969414219841536
NOCHECK_CALL
HALF_LOCKED2 irq

drivers/vfio/vfio_iommu_type1.c vfio_change_dma_owner() -> mmgrab()

Type Parameter Key Value
PARAM_VALUE 0 mm 4096-ptr_max
CAPABLE 0 14
NOCHECK_CALL
UNITS 0 mm unit_byte
LOCK2 &iommu->lock
TYPE_LOCK (struct vfio_iommu)->lock

drivers/vfio/vfio_iommu_type1.c vfio_dma_do_map() -> mmgrab()

Type Parameter Key Value
CAPABLE 0 14
NOCHECK_CALL
UNITS 0 mm unit_byte
LOCK2 &iommu->lock
TYPE_LOCK (struct vfio_iommu)->lock

drivers/infiniband/hw/usnic/usnic_uiom.c usnic_uiom_get_pages() -> mmgrab()

Type Parameter Key Value
PARAM_VALUE 0 mm 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &mm->mmap_lock
TYPE_LOCK (struct mm_struct)->mmap_lock

mm/mmu_notifier.c __mmu_interval_notifier_insert() -> mmgrab()

Type Parameter Key Value
PARAM_VALUE 0 mm 4096-ptr_max
DATA_SOURCE 0 mm $1
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
UNITS 0 mm unit_byte
HALF_LOCKED2 0 &mm->mmap_lock

mm/mmu_notifier.c __mmu_notifier_register() -> mmgrab()

Type Parameter Key Value
PARAM_VALUE 0 mm 4096-ptr_max
BUF_SIZE 0 mm (-1)-s32max
BUF_SIZE 0 mm (-1)-s32max
BUF_SIZE 0 mm->notifier_subscriptions 216,u64max
DATA_SOURCE 0 mm $1
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
UNITS 0 mm unit_byte
LOCK2 global &mm_all_locks_mutex
HALF_LOCKED2 &cli->mutex
HALF_LOCKED2 global &kfd_processes_mutex
HALF_LOCKED2 0 &mm->mmap_lock

drivers/accel/amdxdna/amdxdna_pci_drv.c amdxdna_drm_open() -> mmgrab()

Type Parameter Key Value
CAPABLE 0 21
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
UNITS 0 mm unit_byte

drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_svm.c svm_range_vram_node_new() -> mmgrab()

Type Parameter Key Value
PARAM_VALUE 0 mm 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &mm->mmap_lock
LOCK2 &prange->migrate_mutex
LOCK2 &svms->lock
HALF_LOCKED2 &process_info->lock
TYPE_LOCK (struct mm_struct)->mmap_lock
TYPE_LOCK (struct svm_range)->migrate_mutex
TYPE_LOCK (struct svm_range_list)->lock

drivers/iommu/iommufd/ioas.c change_mm() -> mmgrab()

Type Parameter Key Value
NOCHECK_CALL
UNITS 0 mm unit_byte
LOCK2 &ictx->ioas_creation_lock
TYPE_LOCK (struct iommufd_ctx)->ioas_creation_lock

drivers/infiniband/hw/mlx5/doorbell.c mlx5_ib_db_map_user_desc() -> mmgrab()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
UNITS 0 mm unit_byte
LOCK2 &context->db_page_mutex
TYPE_LOCK (struct mlx5_ib_ucontext)->db_page_mutex

drivers/iommu/iommu-sva.c iommu_sva_domain_alloc() -> mmgrab()

Type Parameter Key Value
PARAM_VALUE 0 mm 4096-ptr_max
DATA_SOURCE 0 mm $1
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
UNITS 0 mm unit_byte
LOCK2 global &iommu_sva_lock
HALF_LOCKED2 &idev->info_lock
HALF_LOCKED2 &uacce->mutex
HALF_LOCKED2 &wq->wq_lock

drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_fence.c amdgpu_amdkfd_fence_create() -> mmgrab()

Type Parameter Key Value
DATA_SOURCE 0 mm $1
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
UNITS 0 mm unit_byte
HALF_LOCKED2 &p->mutex
HALF_LOCKED2 &process_info->lock

mm/mmap_lock.c vma_start_read() -> mmgrab()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
UNITS 0 mm unit_byte

drivers/infiniband/hw/hfi1/mmu_rb.c hfi1_mmu_rb_unregister() -> mmgrab()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
UNITS 0 mm unit_byte

drivers/usb/gadget/function/f_fs.c ffs_epfile_read_iter() -> mmgrab()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
UNITS 0 mm unit_byte
HALF_LOCKED2 &pool->lock

drivers/usb/gadget/function/f_fs.c ffs_epfile_write_iter() -> mmgrab()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
UNITS 0 mm unit_byte
HALF_LOCKED2 &pool->lock

arch/x86/kvm/../../../virt/kvm/kvm_main.c kvm_create_vm() -> mmgrab()

Type Parameter Key Value
NOCHECK_CALL
UNITS 0 mm unit_byte

mm/khugepaged.c __khugepaged_enter() -> mmgrab()

Type Parameter Key Value
PARAM_VALUE 0 mm 4096-ptr_max
DATA_SOURCE 0 mm $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
UNITS 0 mm unit_byte
HALF_LOCKED2 &oldmm->mmap_lock
HALF_LOCKED2 0 &mm->mmap_lock

mm/khugepaged.c madvise_collapse() -> mmgrab()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
UNITS 0 mm unit_byte

kernel/sched/core.c mmgrab_lazy_tlb() -> mmgrab()

Type Parameter Key Value
DATA_SOURCE 0 mm $0
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
UNITS 0 mm unit_byte
HALF_LOCKED2 irq