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 |