Defined in 1 files as a prototype:
Defined in 2 files as a function:
Referenced in 12 files:
- mm/compaction.c, line 2647
- mm/fadvise.c, line 155
- mm/folio.c
- mm/gup.c
- mm/khugepaged.c
- mm/madvise.c
- mm/memfd.c, line 43
- mm/memory.c, line 4337
- mm/migrate.c, line 1416
- mm/migrate_device.c, line 581
- mm/mlock.c
- mm/vmscan.c
Smatch caller information:
mm/madvise.c madvise_cold() -> lru_add_drain()
| Type | Parameter | Key | Value |
|---|---|---|---|
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| HALF_LOCKED2 | &madv_behavior->mm->mmap_lock |
mm/madvise.c madvise_free_single_vma() -> lru_add_drain()
| Type | Parameter | Key | Value |
|---|---|---|---|
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| HALF_LOCKED2 | &madv_behavior->mm->mmap_lock | ||
| HALF_LOCKED2 | &mm->mmap_lock |
mm/madvise.c madvise_pageout() -> lru_add_drain()
| Type | Parameter | Key | Value |
|---|---|---|---|
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| HALF_LOCKED2 | &madv_behavior->mm->mmap_lock |
mm/madvise.c madvise_willneed() -> lru_add_drain()
| Type | Parameter | Key | Value |
|---|---|---|---|
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| HALF_LOCKED2 | &madv_behavior->mm->mmap_lock |
mm/madvise.c madvise_willneed() -> lru_add_drain()
| Type | Parameter | Key | Value |
|---|---|---|---|
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| HALF_LOCKED2 | &madv_behavior->mm->mmap_lock |
mm/folio.c __folio_batch_release() -> lru_add_drain()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL |
mm/folio.c __lru_add_drain_all() -> lru_add_drain()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL |
mm/folio.c lru_cache_drain_for_folio() -> lru_add_drain()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL |
mm/compaction.c compact_zone() -> lru_add_drain()
| Type | Parameter | Key | Value |
|---|---|---|---|
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL |
mm/migrate_device.c migrate_device_unmap() -> lru_add_drain()
| Type | Parameter | Key | Value |
|---|---|---|---|
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL |
mm/vmscan.c lru_gen_shrink_lruvec() -> lru_add_drain()
| Type | Parameter | Key | Value |
|---|---|---|---|
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL |
mm/vmscan.c lru_gen_shrink_node() -> lru_add_drain()
| Type | Parameter | Key | Value |
|---|---|---|---|
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL |
mm/vmscan.c shrink_active_list() -> lru_add_drain()
| Type | Parameter | Key | Value |
|---|---|---|---|
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL |
mm/vmscan.c shrink_inactive_list() -> lru_add_drain()
| Type | Parameter | Key | Value |
|---|---|---|---|
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL |
mm/memory.c wp_can_reuse_anon_folio() -> lru_add_drain()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| LOCK2 | vmf->ptl | ||
| HALF_LOCKED2 | &mm->mmap_lock | ||
| HALF_LOCKED2 | rcu_read |
mm/gup.c faultin_page_range() -> lru_add_drain()
| Type | Parameter | Key | Value |
|---|---|---|---|
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| HALF_LOCKED2 | &mm->mmap_lock |
mm/gup.c populate_vma_page_range() -> lru_add_drain()
| Type | Parameter | Key | Value |
|---|---|---|---|
| RX_PATH | |||
| NOCHECK_CALL | |||
| HALF_LOCKED2 | &mm->mmap_lock |
mm/fadvise.c generic_fadvise() -> lru_add_drain()
| Type | Parameter | Key | Value |
|---|---|---|---|
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL |
mm/migrate.c migrate_folio_move() -> lru_add_drain()
| Type | Parameter | Key | Value |
|---|---|---|---|
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL |
mm/mlock.c mlock_vma_pages_range() -> lru_add_drain()
| Type | Parameter | Key | Value |
|---|---|---|---|
| NOCHECK_CALL |
mm/mlock.c mlock_vma_pages_range() -> lru_add_drain()
| Type | Parameter | Key | Value |
|---|---|---|---|
| NOCHECK_CALL |
mm/khugepaged.c __collapse_huge_page_swapin() -> lru_add_drain()
| Type | Parameter | Key | Value |
|---|---|---|---|
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| LOCK2 | &mm->mmap_lock | ||
| HALF_LOCKED2 | &mm->mmap_lock | ||
| HALF_LOCKED2 | rcu_read | ||
| TYPE_LOCK | (struct mm_struct)->mmap_lock |
mm/khugepaged.c collapse_file() -> lru_add_drain()
| Type | Parameter | Key | Value |
|---|---|---|---|
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| HALF_LOCKED2 | &mm->mmap_lock |
mm/khugepaged.c collapse_file() -> lru_add_drain()
| Type | Parameter | Key | Value |
|---|---|---|---|
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| HALF_LOCKED2 | &mm->mmap_lock |
mm/memfd.c memfd_tag_pins() -> lru_add_drain()
| Type | Parameter | Key | Value |
|---|---|---|---|
| NOCHECK_CALL | |||
| LOCK2 | &inode->i_rwsem | ||
| HALF_LOCKED2 | &session->mutex | ||
| HALF_LOCKED2 | _T->lock | ||
| TYPE_LOCK | (struct inode)->i_rwsem |