Defined in 1 files as a prototype:

Defined in 2 files as a function:

Referenced in 12 files:

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