Defined in 2 files as a function:
Referenced in 7 files:
- mm/huge_memory.c, line 4068
- mm/memcontrol-v1.c, line 724
- mm/memcontrol.c, line 5767
- mm/migrate.c, line 670
- mm/page_io.c
- mm/swap_state.c, line 342
- mm/swapfile.c
Smatch caller information:
mm/memcontrol.c __mem_cgroup_try_charge_swap() -> swap_cluster_unlock()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | ci | 4096-ptr_max |
| PARAM_VALUE | 0 | ci->memcg_table | 0,4096-ptr_max |
| DATA_SOURCE | 0 | ci | r swap_cluster_get_and_lock |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL |
mm/huge_memory.c __folio_freeze_and_split_unmapped() -> swap_cluster_unlock()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | ci | 4096-ptr_max |
| DATA_SOURCE | 0 | ci | r swap_cluster_get_and_lock |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| LOCK2 | irq |
mm/page_io.c swap_zeromap_folio_clear() -> swap_cluster_unlock()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | ci | 4096-ptr_max |
| DATA_SOURCE | 0 | ci | r swap_cluster_get_and_lock |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL |
mm/page_io.c swap_zeromap_folio_set() -> swap_cluster_unlock()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | ci | 4096-ptr_max |
| DATA_SOURCE | 0 | ci | r swap_cluster_get_and_lock |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL |
mm/swapfile.c __try_to_reclaim_swap() -> swap_cluster_unlock()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | ci | 4096-ptr_max |
| CAPPED_DATA | 0 | ci->table | 1 |
| DATA_SOURCE | 0 | ci | r swap_cluster_lock |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| HALF_LOCKED2 | global &system_transition_mutex |
mm/swapfile.c alloc_swap_scan_cluster() -> swap_cluster_unlock()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | ci | 4096-ptr_max |
| PARAM_VALUE | 0 | ci->flags | 1,3-5 |
| DATA_SOURCE | 0 | ci | $1 |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| HALF_LOCKED2 | &si->global_cluster_lock | ||
| HALF_LOCKED2 | global &device_hotplug_lock | ||
| HALF_LOCKED2 | global &system_transition_mutex |
mm/swapfile.c cluster_alloc_swap_entry() -> swap_cluster_unlock()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | ci | 4096-ptr_max |
| DATA_SOURCE | 0 | ci | r swap_cluster_lock |
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| LOCK2 | &si->global_cluster_lock | ||
| HALF_LOCKED2 | global &device_hotplug_lock | ||
| HALF_LOCKED2 | global &system_transition_mutex | ||
| TYPE_LOCK | (struct swap_info_struct)->global_cluster_lock |
mm/swapfile.c swap_alloc_fast() -> swap_cluster_unlock()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | ci | 4096-ptr_max |
| DATA_SOURCE | 0 | ci | r swap_cluster_lock |
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL |
mm/swapfile.c swap_alloc_hibernation_slot() -> swap_cluster_unlock()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | ci | 4096-ptr_max |
| DATA_SOURCE | 0 | ci | r swap_cluster_lock |
| PREEMPT_ADD | <- disables preempt | ||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| LOCK2 | global &device_hotplug_lock | ||
| LOCK2 | global &system_transition_mutex |
mm/swapfile.c swap_dup_entries_cluster() -> swap_cluster_unlock()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | ci | 4096-ptr_max |
| PARAM_VALUE | 0 | ci->extend_table | 0,4096-ptr_max |
| CAPPED_DATA | 0 | ci->table | 1 |
| DATA_SOURCE | 0 | ci | r swap_cluster_lock |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| HALF_LOCKED2 | &mm->mmap_lock | ||
| HALF_LOCKED2 | &oldmm->mmap_lock | ||
| HALF_LOCKED2 | dst_ptl | ||
| HALF_LOCKED2 | rcu_read | ||
| HALF_LOCKED2 | src_ptl | ||
| HALF_LOCKED2 | 0 | &ci->lock |
mm/swapfile.c swap_dup_entries_cluster() -> swap_cluster_unlock()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | ci | 4096-ptr_max |
| PARAM_VALUE | 0 | ci->extend_table | 0,4096-ptr_max |
| CAPPED_DATA | 0 | ci->table | 1 |
| DATA_SOURCE | 0 | ci | r swap_cluster_lock |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| HALF_LOCKED2 | &mm->mmap_lock | ||
| HALF_LOCKED2 | &oldmm->mmap_lock | ||
| HALF_LOCKED2 | dst_ptl | ||
| HALF_LOCKED2 | rcu_read | ||
| HALF_LOCKED2 | src_ptl | ||
| HALF_LOCKED2 | 0 | &ci->lock |
mm/swapfile.c swap_entry_swapped() -> swap_cluster_unlock()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | ci | 4096-ptr_max |
| PARAM_VALUE | 0 | ci->table | 0,4096-ptr_max |
| DATA_SOURCE | 0 | ci | r swap_cluster_lock |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| LOCK2 | &mm->mmap_lock | ||
| LOCK2 | &oldmm->mmap_lock | ||
| LOCK2 | dst_ptl | ||
| LOCK2 | rcu_read | ||
| LOCK2 | src_ptl | ||
| TYPE_LOCK | (struct mm_struct)->mmap_lock |
mm/swapfile.c swap_free_hibernation_slot() -> swap_cluster_unlock()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | ci | 4096-ptr_max |
| PARAM_VALUE | 0 | ci->extend_table | 0,4096-ptr_max |
| DATA_SOURCE | 0 | ci | r swap_cluster_lock |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| LOCK2 | global &system_transition_mutex | ||
| HALF_LOCKED2 | global &device_hotplug_lock |
mm/swapfile.c swap_put_entries_cluster() -> swap_cluster_unlock()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | ci | 4096-ptr_max |
| DATA_SOURCE | 0 | ci | r swap_cluster_lock |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| HALF_LOCKED2 | ptl |
mm/swapfile.c swap_reclaim_full_clusters() -> swap_cluster_unlock()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | ci | 4096-ptr_max |
| PARAM_VALUE | 0 | ci->flags | 1-255 |
| DATA_SOURCE | 0 | ci | r isolate_lock_cluster |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| HALF_LOCKED2 | 0 | &ci->lock |
mm/swapfile.c swp_swapcount() -> swap_cluster_unlock()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | ci | 4096-ptr_max |
| CAPPED_DATA | 0 | ci->table | 1 |
| DATA_SOURCE | 0 | ci | r swap_cluster_lock |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| LOCK2 | ptl | ||
| HALF_LOCKED2 | &mm->mmap_lock |
mm/swapfile.c wait_for_allocation() -> swap_cluster_unlock()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | ci | 4096-ptr_max |
| DATA_SOURCE | 0 | ci | r swap_cluster_lock |
| CAPABLE | 0 | 21 | |
| NOCHECK_CALL |
mm/migrate.c __folio_migrate_mapping() -> swap_cluster_unlock()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | ci | 4096-ptr_max |
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| LOCK2 | irq | ||
| HALF_LOCKED2 | &((&xas)->xa)->xa_lock |
mm/swap_state.c swap_cache_del_folio() -> swap_cluster_unlock()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | ci | 4096-ptr_max |
| PARAM_VALUE | 0 | ci->count | 0-511,513-u16max |
| PARAM_VALUE | 0 | ci->flags | 1-2,5 |
| PARAM_VALUE | 0 | ci->list.next | 4096-ptr_max |
| PARAM_VALUE | 0 | ci->list.next->prev | 4096-ptr_max |
| PARAM_VALUE | 0 | ci->list.prev->next | 4096-ptr_max |
| PARAM_VALUE | 0 | ci->memcg_table | 0,4096-ptr_max |
| PARAM_VALUE | 0 | *ci->memcg_table->id | 0-u16max |
| DATA_SOURCE | 0 | ci | r swap_cluster_lock |
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| HALF_LOCKED2 | global &mf_mutex | ||
| HALF_LOCKED2 | vmf->ptl |
mm/memcontrol-v1.c memcg1_swapin() -> swap_cluster_unlock()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | ci | 4096-ptr_max |
| PARAM_VALUE | 0 | ci->memcg_table | 0,4096-ptr_max |
| PARAM_VALUE | 0 | *ci->memcg_table->id | 0-u16max |
| DATA_SOURCE | 0 | ci | r swap_cluster_get_and_lock |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL |