Defined in 2 files as a function:

Referenced in 2 files:

Smatch caller information:

kernel/fork.c mmu_notifier_subscriptions_destroy() -> mm_has_notifiers()

Type Parameter Key Value
PARAM_VALUE 0 mm 4096-7138969414219841535,7138969414219841537-ptr_max
BUF_SIZE 0 mm s32min-(-1),1-s32max
BUF_SIZE 0 mm s32min-(-1),1-s32max
CAPPED_DATA 0 mm 1
CAPPED_DATA 0 mm->pgd 1
DATA_SOURCE 0 mm $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
UNITS 0 mm unit_byte
HALF_LOCKED2 &context->db_page_mutex
HALF_LOCKED2 &dev->domain_lock
HALF_LOCKED2 &ictx->ioas_creation_lock
HALF_LOCKED2 &pool->lock
HALF_LOCKED2 &xdna->client_lock
HALF_LOCKED2 &xdna->dev_lock
HALF_LOCKED2 rcu_read
HALF_LOCKED2 0 &mm->mmap_lock

mm/madvise.c mmu_notifier_invalidate_range_end() -> mm_has_notifiers()

Type Parameter Key Value
PARAM_VALUE 0 mm 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
UNITS 0 mm unit_byte
HALF_LOCKED2 &madv_behavior->mm->mmap_lock
HALF_LOCKED2 &mm->mmap_lock

mm/madvise.c mmu_notifier_invalidate_range_start() -> mm_has_notifiers()

Type Parameter Key Value
PARAM_VALUE 0 mm 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
UNITS 0 mm unit_byte
HALF_LOCKED2 &madv_behavior->mm->mmap_lock
HALF_LOCKED2 &mm->mmap_lock

mm/huge_memory.c mmu_notifier_invalidate_range_end() -> mm_has_notifiers()

Type Parameter Key Value
PARAM_VALUE 0 mm 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
UNITS 0 mm unit_byte
HALF_LOCKED2 &ctx->map_changing_lock

mm/huge_memory.c mmu_notifier_invalidate_range_start() -> mm_has_notifiers()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
UNITS 0 mm unit_byte
HALF_LOCKED2 &ctx->map_changing_lock

arch/x86/mm/tlb.c mmu_notifier_arch_invalidate_secondary_tlbs() -> mm_has_notifiers()

Type Parameter Key Value
BUF_SIZE 0 mm (-1),1-s32max
BUF_SIZE 0 mm (-1),1-s32max
DATA_SOURCE 0 mm $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
USER_DATA 0 mm->context.ldt->nr_entries 1-8192[c]
NO_OVERFLOW_SIMPLE 0 mm->arg_start
UNITS 0 mm unit_byte
HALF_LOCKED2 &ctx->map_changing_lock
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 &vma->vm_file->f_mapping->i_mmap_rwsem
HALF_LOCKED2 flags
HALF_LOCKED2 old_ptl
HALF_LOCKED2 ptl
HALF_LOCKED2 rcu_read
HALF_LOCKED2 vmf->ptl
HALF_LOCKED2 0 &mm->context.ldt_usr_sem
HALF_LOCKED2 0 &mm->mmap_lock

mm/mmap.c mmu_notifier_release() -> mm_has_notifiers()

Type Parameter Key Value
PARAM_VALUE 0 mm 4096-ptr_max
PARAM_VALUE 0 mm->notifier_subscriptions 0
CAPPED_DATA 0 mm 1
CAPPED_DATA 0 mm->uprobes_state.xol_area 1
DATA_SOURCE 0 mm $0
RX_PATH
TASK_NOT_RUNNING
UNITS 0 mm unit_byte
HALF_LOCKED2 &pool->lock
HALF_LOCKED2 0 &mm->mmap_lock

mm/userfaultfd.c mmu_notifier_invalidate_range_end() -> mm_has_notifiers()

Type Parameter Key Value
PARAM_VALUE 0 mm 4096-ptr_max
UNITS 0 mm unit_byte
LOCK2 &ctx->map_changing_lock
TYPE_LOCK (struct userfaultfd_ctx)->map_changing_lock

mm/userfaultfd.c mmu_notifier_invalidate_range_start() -> mm_has_notifiers()

Type Parameter Key Value
PARAM_VALUE 0 mm 4096-ptr_max
UNITS 0 mm unit_byte
LOCK2 &ctx->map_changing_lock
TYPE_LOCK (struct userfaultfd_ctx)->map_changing_lock

mm/damon/vaddr.c mmu_notifier_clear_young() -> mm_has_notifiers()

Type Parameter Key Value
BUF_SIZE 0 mm s32min-(-1),1-s32max
BUF_SIZE 0 mm s32min-(-1),1-s32max
DATA_SOURCE 0 mm $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
UNITS 0 mm unit_byte
HALF_LOCKED2 &m->lock
HALF_LOCKED2 &mapping->i_mmap_rwsem

mm/damon/vaddr.c mmu_notifier_test_young() -> mm_has_notifiers()

Type Parameter Key Value
BUF_SIZE 0 mm s32min-(-1),1-s32max
BUF_SIZE 0 mm s32min-(-1),1-s32max
DATA_SOURCE 0 mm $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
UNITS 0 mm unit_byte
HALF_LOCKED2 ptl

fs/proc/task_mmu.c mmu_notifier_invalidate_range_end() -> mm_has_notifiers()

Type Parameter Key Value
PARAM_VALUE 0 mm 4096-ptr_max
UNITS 0 mm unit_byte
LOCK2 &mm->mmap_lock
TYPE_LOCK (struct mm_struct)->mmap_lock

fs/proc/task_mmu.c mmu_notifier_invalidate_range_start() -> mm_has_notifiers()

Type Parameter Key Value
PARAM_VALUE 0 mm 4096-ptr_max
UNITS 0 mm unit_byte
LOCK2 &mm->mmap_lock
TYPE_LOCK (struct mm_struct)->mmap_lock

mm/rmap.c mmu_notifier_arch_invalidate_secondary_tlbs() -> mm_has_notifiers()

Type Parameter Key Value
PARAM_VALUE 0 mm 4096-ptr_max
DATA_SOURCE 0 mm $0
RX_PATH
TASK_NOT_RUNNING
UNITS 0 mm unit_byte
HALF_LOCKED2 &anon_vma->root->rwsem
HALF_LOCKED2 &folio->private->lock

mm/rmap.c mmu_notifier_clear_flush_young() -> mm_has_notifiers()

Type Parameter Key Value
PARAM_VALUE 0 mm 4096-ptr_max
DATA_SOURCE 0 mm $0
RX_PATH
TASK_NOT_RUNNING
UNITS 0 mm unit_byte
HALF_LOCKED2 &anon_vma->root->rwsem
HALF_LOCKED2 &folio->private->lock

mm/rmap.c mmu_notifier_invalidate_range_end() -> mm_has_notifiers()

Type Parameter Key Value
PARAM_VALUE 0 mm 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
UNITS 0 mm unit_byte
HALF_LOCKED2 &mm->mmap_lock

mm/rmap.c mmu_notifier_invalidate_range_start() -> mm_has_notifiers()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
UNITS 0 mm unit_byte
HALF_LOCKED2 &mm->mmap_lock

mm/mprotect.c mmu_notifier_invalidate_range_end() -> mm_has_notifiers()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
UNITS 0 mm unit_byte
HALF_LOCKED2 &dst_mm->mmap_lock
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 _T->lock

mm/mprotect.c mmu_notifier_invalidate_range_start() -> mm_has_notifiers()

Type Parameter Key Value
PARAM_VALUE 0 mm 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
UNITS 0 mm unit_byte
HALF_LOCKED2 &dst_mm->mmap_lock
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 _T->lock

mm/hugetlb.c mmu_notifier_invalidate_range_end() -> mm_has_notifiers()

Type Parameter Key Value
PARAM_VALUE 0 mm 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
UNITS 0 mm unit_byte
HALF_LOCKED2 &mapping->i_mmap_rwsem
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 &oldmm->mmap_lock

mm/hugetlb.c mmu_notifier_invalidate_range_start() -> mm_has_notifiers()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
UNITS 0 mm unit_byte
HALF_LOCKED2 &mapping->i_mmap_rwsem
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 &oldmm->mmap_lock

mm/mremap.c mmu_notifier_invalidate_range_end() -> mm_has_notifiers()

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

mm/mremap.c mmu_notifier_invalidate_range_start() -> mm_has_notifiers()

Type Parameter Key Value
UNITS 0 mm unit_byte
LOCK2 &mm->mmap_lock
HALF_LOCKED2 &tsk->signal->exec_update_lock
TYPE_LOCK (struct mm_struct)->mmap_lock

mm/ksm.c mmu_notifier_invalidate_range_end() -> mm_has_notifiers()

Type Parameter Key Value
PARAM_VALUE 0 mm 4096-ptr_max
UNITS 0 mm unit_byte
LOCK2 &mm->mmap_lock
LOCK2 global &ksm_thread_mutex
TYPE_LOCK (struct mm_struct)->mmap_lock

mm/ksm.c mmu_notifier_invalidate_range_start() -> mm_has_notifiers()

Type Parameter Key Value
UNITS 0 mm unit_byte
LOCK2 &mm->mmap_lock
LOCK2 global &ksm_thread_mutex
TYPE_LOCK (struct mm_struct)->mmap_lock

mm/migrate_device.c mmu_notifier_invalidate_range_end() -> mm_has_notifiers()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
UNITS 0 mm unit_byte

mm/migrate_device.c mmu_notifier_invalidate_range_start() -> mm_has_notifiers()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
UNITS 0 mm unit_byte

mm/vmscan.c get_pmd_pfn() -> mm_has_notifiers()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
UNITS 0 mm unit_byte
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 ptl

mm/vmscan.c get_pte_pfn() -> mm_has_notifiers()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
UNITS 0 mm unit_byte
HALF_LOCKED2 ptl
HALF_LOCKED2 rcu_read

mm/vmscan.c mmu_notifier_clear_young() -> mm_has_notifiers()

Type Parameter Key Value
DATA_SOURCE 0 mm $0
RX_PATH
TASK_NOT_RUNNING
UNITS 0 mm unit_byte
HALF_LOCKED2 ptl

mm/vmscan.c walk_pmd_range() -> mm_has_notifiers()

Type Parameter Key Value
PARAM_VALUE 0 mm 4096-ptr_max
BUF_SIZE 0 mm s32min-(-1),1-s32max
BUF_SIZE 0 mm s32min-(-1),1-s32max
RX_PATH
TASK_NOT_RUNNING
UNITS 0 mm unit_byte
HALF_LOCKED2 &mm->mmap_lock

mm/vmscan.c walk_pmd_range_locked() -> mm_has_notifiers()

Type Parameter Key Value
PARAM_VALUE 0 mm 4096-ptr_max
BUF_SIZE 0 mm s32min-(-1),1-s32max
BUF_SIZE 0 mm s32min-(-1),1-s32max
RX_PATH
TASK_NOT_RUNNING
UNITS 0 mm unit_byte
LOCK2 ptl
HALF_LOCKED2 &mm->mmap_lock

mm/memory.c mmu_notifier_invalidate_range_end() -> mm_has_notifiers()

Type Parameter Key Value
PARAM_VALUE 0 mm 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
UNITS 0 mm unit_byte
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 &oldmm->mmap_lock

mm/memory.c mmu_notifier_invalidate_range_start() -> mm_has_notifiers()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
UNITS 0 mm unit_byte
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 &oldmm->mmap_lock

mm/memory.c mmu_notifier_invalidate_range_start_nonblock() -> mm_has_notifiers()

Type Parameter Key Value
UNITS 0 mm unit_byte
LOCK2 &mm->mmap_lock
TYPE_LOCK (struct mm_struct)->mmap_lock

mm/damon/ops-common.c mmu_notifier_clear_young() -> mm_has_notifiers()

Type Parameter Key Value
DATA_SOURCE 0 mm $0
RX_PATH
TASK_NOT_RUNNING
UNITS 0 mm unit_byte
HALF_LOCKED2 ptl

mm/damon/ops-common.c mmu_notifier_test_young() -> mm_has_notifiers()

Type Parameter Key Value
DATA_SOURCE 0 mm $0
RX_PATH
TASK_NOT_RUNNING
UNITS 0 mm unit_byte
HALF_LOCKED2 &anon_vma->root->rwsem
HALF_LOCKED2 &folio->private->lock

drivers/iommu/iommu-sva.c mmu_notifier_arch_invalidate_secondary_tlbs() -> mm_has_notifiers()

Type Parameter Key Value
DATA_SOURCE 0 mm $0
UNITS 0 mm unit_byte
LOCK2 _T->lock
HALF_LOCKED2 &pool->lock

kernel/events/uprobes.c mmu_notifier_invalidate_range_end() -> mm_has_notifiers()

Type Parameter Key Value
PARAM_VALUE 0 mm 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
UNITS 0 mm unit_byte
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 &uprobe->register_rwsem

kernel/events/uprobes.c mmu_notifier_invalidate_range_start() -> mm_has_notifiers()

Type Parameter Key Value
PARAM_VALUE 0 mm 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
UNITS 0 mm unit_byte
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 &uprobe->register_rwsem

mm/mapping_dirty_helpers.c mmu_notifier_invalidate_range_end() -> mm_has_notifiers()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
UNITS 0 mm unit_byte
HALF_LOCKED2 &m->lock
HALF_LOCKED2 &mapping->i_mmap_rwsem

mm/mapping_dirty_helpers.c mmu_notifier_invalidate_range_start() -> mm_has_notifiers()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
UNITS 0 mm unit_byte
HALF_LOCKED2 &m->lock
HALF_LOCKED2 &mapping->i_mmap_rwsem

mm/khugepaged.c mmu_notifier_invalidate_range_end() -> mm_has_notifiers()

Type Parameter Key Value
PARAM_VALUE 0 mm 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
UNITS 0 mm unit_byte
HALF_LOCKED2 &mapping->i_mmap_rwsem
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 &vma->anon_vma->root->rwsem

mm/khugepaged.c mmu_notifier_invalidate_range_start() -> mm_has_notifiers()

Type Parameter Key Value
PARAM_VALUE 0 mm 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
UNITS 0 mm unit_byte
HALF_LOCKED2 &mapping->i_mmap_rwsem
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 &vma->anon_vma->root->rwsem

mm/khugepaged.c mmu_notifier_test_young() -> mm_has_notifiers()

Type Parameter Key Value
DATA_SOURCE 0 mm $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
UNITS 0 mm unit_byte
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 &vma->anon_vma->root->rwsem
HALF_LOCKED2 pte_ptl
HALF_LOCKED2 ptl

mm/page_idle.c mmu_notifier_clear_young() -> mm_has_notifiers()

Type Parameter Key Value
DATA_SOURCE 0 mm $0
RX_PATH
TASK_NOT_RUNNING
UNITS 0 mm unit_byte
HALF_LOCKED2 &anon_vma->root->rwsem
HALF_LOCKED2 &folio->private->lock