Defined in 2 files as a function:

Referenced in 5 files:

Smatch caller information:

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

Type Parameter Key Value
PARAM_VALUE 0 anon_vma 4096-ptr_max
PARAM_VALUE 0 anon_vma->refcount.counter 0-s32max
PARAM_VALUE 0 anon_vma->root 4096-ptr_max
DATA_SOURCE 0 anon_vma r folio_get_anon_vma
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 0 &anon_vma->root->rwsem
TYPE_LOCK (struct anon_vma)->rwsem

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

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

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

Type Parameter Key Value
PARAM_VALUE 0 anon_vma 1-u64max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &src->anon_vma->root->rwsem
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 &oldmm->mmap_lock
TYPE_LOCK (struct anon_vma)->rwsem

mm/rmap.c anon_vma_fork() -> anon_vma_unlock_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->rb_root.rb_leftmost 4096-ptr_max
PARAM_VALUE 0 anon_vma->rb_root.rb_leftmost->rb_left 0
PARAM_VALUE 0 anon_vma->rb_root.rb_leftmost->rb_right 0
PARAM_VALUE 0 anon_vma->rb_root.rb_root.rb_node 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
LOCK2 0 &anon_vma->root->rwsem
TYPE_LOCK (struct anon_vma)->rwsem
TYPE_LOCK (struct mm_struct)->mmap_lock

mm/rmap.c anon_vma_free() -> anon_vma_unlock_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
DATA_SOURCE 0 anon_vma $0
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 0 &anon_vma->root->rwsem
TYPE_LOCK (struct anon_vma)->rwsem

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

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

mm/mremap.c drop_rmap_locks() -> anon_vma_unlock_write()

Type Parameter Key Value
PARAM_VALUE 0 anon_vma 4096-ptr_max
NOCHECK_CALL
LOCK2 &mm->mmap_lock
HALF_LOCKED2 &tsk->signal->exec_update_lock
TYPE_LOCK (struct mm_struct)->mmap_lock

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

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

mm/vma.c vm_unlock_anon_vma() -> anon_vma_unlock_write()

Type Parameter Key Value
PARAM_VALUE 0 anon_vma 4096-ptr_max
DATA_SOURCE 0 anon_vma $0
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 global &mm_all_locks_mutex
HALF_LOCKED2 &cli->mutex
HALF_LOCKED2 &mm->mmap_lock

mm/vma.c vma_complete() -> anon_vma_unlock_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

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

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

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

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