Defined in 2 files as a function:

Referenced in 5 files:

Smatch caller information:

mm/huge_memory.c __folio_split() -> anon_vma_lock_write()

Type Parameter Key Value
PARAM_VALUE 0 anon_vma 4096-ptr_max
PARAM_VALUE 0 anon_vma->refcount.counter 0-s32max
DATA_SOURCE 0 anon_vma r folio_get_anon_vma
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL

mm/rmap.c __anon_vma_prepare() -> anon_vma_lock_write()

Type Parameter Key Value
PARAM_VALUE 0 anon_vma 1-u64max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &mm->mmap_lock

mm/rmap.c anon_vma_clone() -> anon_vma_lock_write()

Type Parameter Key Value
PARAM_VALUE 0 anon_vma 1-u64max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 &oldmm->mmap_lock

mm/rmap.c anon_vma_fork() -> anon_vma_lock_write()

Type Parameter Key Value
PARAM_VALUE 0 anon_vma 4096-ptr_max
PARAM_VALUE 0 anon_vma->num_active_vmas 1
PARAM_VALUE 0 anon_vma->num_children 0
PARAM_VALUE 0 anon_vma->parent 4096-ptr_max
PARAM_VALUE 0 anon_vma->parent->root 4096-ptr_max
PARAM_VALUE 0 anon_vma->refcount.counter 1
PARAM_VALUE 0 anon_vma->root 4096-ptr_max
DATA_SOURCE 0 anon_vma r anon_vma_alloc
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &mm->mmap_lock
LOCK2 &oldmm->mmap_lock
TYPE_LOCK (struct mm_struct)->mmap_lock

mm/rmap.c anon_vma_free() -> anon_vma_lock_write()

Type Parameter Key Value
PARAM_VALUE 0 anon_vma 4096-ptr_max
PARAM_VALUE 0 anon_vma->refcount.counter 0
PARAM_VALUE 0 anon_vma->root 4096-ptr_max
PARAM_VALUE 0 anon_vma->root->rwsem.count.counter s64min-(-1),1-s64max
DATA_SOURCE 0 anon_vma $0
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL

mm/rmap.c unlink_anon_vmas() -> anon_vma_lock_write()

Type Parameter Key Value
PARAM_VALUE 0 anon_vma 1-u64max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &mm->mmap_lock

mm/mremap.c take_rmap_locks() -> anon_vma_lock_write()

Type Parameter Key Value
PARAM_VALUE 0 anon_vma 1-u64max
NOCHECK_CALL
LOCK2 &mm->mmap_lock
HALF_LOCKED2 &tsk->signal->exec_update_lock
HALF_LOCKED2 &vma->vm_file->f_mapping->i_mmap_rwsem
TYPE_LOCK (struct mm_struct)->mmap_lock

mm/vma.c expand_downwards() -> anon_vma_lock_write()

Type Parameter Key Value
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &mm->mmap_lock

mm/vma.c vma_prepare() -> anon_vma_lock_write()

Type Parameter Key Value
PARAM_VALUE 0 anon_vma 1-u64max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 &tsk->signal->exec_update_lock
HALF_LOCKED2 &vp->mapping->i_mmap_rwsem

mm/khugepaged.c collapse_huge_page() -> anon_vma_lock_write()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &mm->mmap_lock
HALF_LOCKED2 &mm->mmap_lock
TYPE_LOCK (struct mm_struct)->mmap_lock