Defined in 1 files as a prototype:

Defined in 2 files as a function:

Referenced in 2 files:

Smatch caller information:

kernel/exit.c exit_mm() -> membarrier_update_current_mm()

Type Parameter Key Value
PARAM_VALUE 0 next_mm 0
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &mm->mmap_lock
LOCK2 irq
HALF_LOCKED2 global &system_transition_mutex
TYPE_LOCK (struct mm_struct)->mmap_lock

kernel/kthread.c kthread_unuse_mm() -> membarrier_update_current_mm()

Type Parameter Key Value
PARAM_VALUE 0 next_mm 0
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
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

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

Type Parameter Key Value
PARAM_VALUE 0 next_mm 4096-ptr_max
PARAM_VALUE 0 next_mm->mmap_lock.first_waiter->handoff_set 0-1
PARAM_VALUE 0 next_mm->mmap_lock.first_waiter->type 0-1
DATA_SOURCE 0 next_mm $0
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
UNITS 0 next_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