Documented in 1 files:

Defined in 1 files as a function:

Referenced in 33 files:

Smatch caller information:

fs/ubifs/tnc_misc.c ubifs_destroy_tnc_tree() -> atomic_long_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 1592116691373998080
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &c->umount_mutex

mm/huge_memory.c mm_dec_nr_ptes() -> atomic_long_sub()

Type Parameter Key Value
PARAM_VALUE 0 i 4096
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 ptl

io_uring/rsrc.c __io_unaccount_mem() -> atomic_long_sub()

Type Parameter Key Value
PARAM_VALUE 0 i s64min-(-1),1-s64max
PARAM_VALUE 1 v 4096-ptr_max
DATA_SOURCE 0 i $1
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &ctx->uring_lock

io_uring/memmap.c __io_unaccount_mem() -> atomic_long_sub()

Type Parameter Key Value
PARAM_VALUE 0 i 1-4294967295
PARAM_VALUE 1 v 4096-ptr_max
DATA_SOURCE 0 i $1
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
NO_OVERFLOW_SIMPLE 0 i
HALF_LOCKED2 &ctx->uring_lock
HALF_LOCKED2 _T->lock

mm/slub.c dec_slabs_node() -> atomic_long_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 4096-ptr_max
DATA_SOURCE 0 i $2
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
UNITS 0 i unit_array_size
HALF_LOCKED2 &n->list_lock
HALF_LOCKED2 flags

mm/swapfile.c __do_sys_swapoff() -> atomic_long_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 2426144052676947968
CAPPED_DATA 0 i 1
CAPABLE 0 21
PREEMPT_ADD <- disables preempt
NOCHECK_CALL
UNITS 0 i unit_page
LOCK2 &p->lock
LOCK2 global &swap_lock
TYPE_LOCK (struct swap_info_struct)->lock

mm/swapfile.c __do_sys_swapoff() -> atomic_long_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 2426144052676947968
CAPPED_DATA 0 i 1
CAPABLE 0 21
PREEMPT_ADD <- disables preempt
NOCHECK_CALL
UNITS 0 i unit_page
LOCK2 &p->lock
LOCK2 global &swap_lock
TYPE_LOCK (struct swap_info_struct)->lock

mm/swapfile.c swap_range_alloc() -> atomic_long_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 2426144052676947968
DATA_SOURCE 0 i $1
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &ci->lock
HALF_LOCKED2 &si->global_cluster_lock
HALF_LOCKED2 global &device_hotplug_lock
HALF_LOCKED2 global &system_transition_mutex

net/core/skbuff.c mm_unaccount_pinned_pages() -> atomic_long_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 4096-ptr_max
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
USER_DATA 0 i 0-u32max[c]
UNITS 0 i unit_page
HALF_LOCKED2 &rm->m_rs_lock
HALF_LOCKED2 flags

drivers/iommu/iommufd/pages.c decr_user_locked_vm() -> atomic_long_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 4096-ptr_max
CAPPED_DATA 0 i 1
DATA_SOURCE 0 i $1
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
UNITS 0 i unit_page
HALF_LOCKED2 &ictx->ioas_creation_lock
HALF_LOCKED2 &pages->mutex

mm/rmap.c hugetlb_count_sub() -> atomic_long_sub()

Type Parameter Key Value
PARAM_VALUE 0 i 0-4294967295
DATA_SOURCE 0 i $0
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &anon_vma->root->rwsem
HALF_LOCKED2 &folio->private->lock
HALF_LOCKED2 &resv_map->rw_sema
HALF_LOCKED2 &vma->vm_private_data->rw_sema

mm/hugetlb.c hugetlb_count_sub() -> atomic_long_sub()

Type Parameter Key Value
PARAM_VALUE 0 i 0-4294967295
DATA_SOURCE 0 i $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &mapping->i_mmap_rwsem

mm/hugetlb.c mm_dec_nr_pmds() -> atomic_long_sub()

Type Parameter Key Value
PARAM_VALUE 0 i 4096
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 &vma->vm_file->f_mapping->i_mmap_rwsem

fs/cachefiles/io.c cachefiles_write_complete() -> atomic_long_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &epdata->dev->lock

mm/kasan/kasan_test_c.c kasan_atomics_helper() -> atomic_long_sub()

Type Parameter Key Value
PARAM_VALUE 0 i 42
PARAM_VALUE 1 v 4096-ptr_max
DATA_SOURCE 1 v $1
NOCHECK_CALL

security/integrity/ima/ima_queue.c ima_queue_delete_partial() -> atomic_long_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 4944777132338331648
BUF_SIZE 1 v 24
NOCHECK_CALL
LOCK2 global &ima_extend_list_mutex

mm/page_counter.c page_counter_try_charge() -> atomic_long_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 4096-ptr_max
DATA_SOURCE 0 i $1
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
USER_DATA 0 i s64min-s64max

mm/memory.c mm_dec_nr_pmds() -> atomic_long_sub()

Type Parameter Key Value
PARAM_VALUE 0 i 4096
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 &tsk->signal->exec_update_lock

mm/memory.c mm_dec_nr_ptes() -> atomic_long_sub()

Type Parameter Key Value
PARAM_VALUE 0 i 4096
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &mm->mmap_lock

mm/memory.c mm_dec_nr_puds() -> atomic_long_sub()

Type Parameter Key Value
PARAM_VALUE 0 i 4096
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 &tsk->signal->exec_update_lock

drivers/gpu/drm/ttm/ttm_pool.c ttm_pool_dispose_list() -> atomic_long_sub()

Type Parameter Key Value
PARAM_VALUE 0 i s32min-s32max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 global &pool_shrink_rwsem

drivers/gpu/drm/ttm/ttm_pool.c ttm_pool_type_take() -> atomic_long_sub()

Type Parameter Key Value
PARAM_VALUE 0 i s32min-s32max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL

lib/genalloc.c gen_pool_alloc_algo_owner() -> atomic_long_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 4096-ptr_max
PARAM_VALUE 1 v->counter s64min-(-1),1-s64max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
UNITS 0 i unit_byte
LOCK2 rcu_read
HALF_LOCKED2 &chan->lock
HALF_LOCKED2 &ipc->lock
HALF_LOCKED2 flags
HALF_LOCKED2 global &cpm_muram_lock

kernel/events/core.c perf_mmap_close() -> atomic_long_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
UNITS 0 i unit_page
LOCK2 &rb->aux_mutex
HALF_LOCKED2 _T->lock
TYPE_LOCK (struct perf_buffer)->aux_mutex

kernel/events/core.c perf_mmap_unaccount() -> atomic_long_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
UNITS 0 i unit_page
HALF_LOCKED2 _T->lock

mm/memory-failure.c num_poisoned_pages_sub() -> atomic_long_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 6582150584639197184
DATA_SOURCE 0 i $1
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &attr->mutex

net/ipv4/inet_fragment.c sub_frag_mem_limit() -> atomic_long_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 4096-ptr_max
DATA_SOURCE 0 i $1
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
NO_OVERFLOW_SIMPLE 0 i
UNITS 0 i unit_byte
HALF_LOCKED2 rcu_read

fs/smb/client/cached_dir.c free_cached_dir() -> atomic_long_sub()

Type Parameter Key Value
PARAM_VALUE 0 i s64min-(-1),1-s64max
PARAM_VALUE 1 v 4096-ptr_max
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &cfid->cfids->cfid_list_lock
HALF_LOCKED2 &cfid->dentry->d_lockref.lock

arch/x86/coco/tdx/tdx.c tdx_enc_status_change_finish() -> atomic_long_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 9167653038521565184
DATA_SOURCE 0 i $1
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HOST_DATA 0 i 1-64[c]
USER_DATA 0 i 1-2098130[c]
LOCK2 global &mem_enc_lock

kernel/dma/swiotlb.c dec_transient_used() -> atomic_long_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 4096-ptr_max
DATA_SOURCE 0 i $1
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
UNITS 0 i unit_array_size

kernel/dma/swiotlb.c dec_used_real() -> atomic_long_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 4096-ptr_max
DATA_SOURCE 0 i $1
NOCHECK_CALL

drivers/base/memory.c memblk_nr_poison_sub() -> atomic_long_sub()

Type Parameter Key Value
PARAM_VALUE 0 i 1
PARAM_VALUE 1 v 4096-ptr_max
DATA_SOURCE 0 i $1
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &attr->mutex

io_uring/notif.c __io_unaccount_mem() -> atomic_long_sub()

Type Parameter Key Value
PARAM_VALUE 0 i 1-4294967295
PARAM_VALUE 1 v 4096-ptr_max
DATA_SOURCE 0 i $1
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &ctx->uring_lock
HALF_LOCKED2 _T->lock

mm/vmalloc.c purge_vmap_node() -> atomic_long_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 7610197702772047872
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 global &vmap_purge_lock

mm/debug_vm_pgtable.c mm_dec_nr_pmds() -> atomic_long_sub()

Type Parameter Key Value
PARAM_VALUE 0 i 4096
PREEMPT_ADD
NOCHECK_CALL

mm/debug_vm_pgtable.c mm_dec_nr_ptes() -> atomic_long_sub()

Type Parameter Key Value
PARAM_VALUE 0 i 4096
PREEMPT_ADD
NOCHECK_CALL

mm/debug_vm_pgtable.c mm_dec_nr_puds() -> atomic_long_sub()

Type Parameter Key Value
PARAM_VALUE 0 i 4096
PREEMPT_ADD
NOCHECK_CALL

drivers/gpu/drm/ttm/ttm_tt.c ttm_tt_populate() -> atomic_long_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 2485617248563195904
NOSPEC 0 i
NOSPEC 0 i
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
USER_DATA 0 i 0-u32max[c]
NO_OVERFLOW_SIMPLE 0 i

drivers/gpu/drm/ttm/ttm_tt.c ttm_tt_populate() -> atomic_long_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 3438847894657478656
NOSPEC 0 i
NOSPEC 0 i
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
USER_DATA 0 i 0-u32max[c]
NO_OVERFLOW_SIMPLE 0 i

drivers/gpu/drm/ttm/ttm_tt.c ttm_tt_unpopulate() -> atomic_long_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 2485617248563195904
NOSPEC 0 i
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
USER_DATA 0 i 0-u32max[c]
NO_OVERFLOW_SIMPLE 0 i

drivers/gpu/drm/ttm/ttm_tt.c ttm_tt_unpopulate() -> atomic_long_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 3438847894657478656
NOSPEC 0 i
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
USER_DATA 0 i 0-u32max[c]
NO_OVERFLOW_SIMPLE 0 i

fs/ubifs/shrinker.c shrink_tnc() -> atomic_long_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 1592116691373998080
DATA_SOURCE 0 i r ubifs_destroy_tnc_subtree
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &c->tnc_mutex
LOCK2 &c->umount_mutex
HALF_LOCKED2 global &bch_register_lock
TYPE_LOCK (struct ubifs_info)->tnc_mutex
TYPE_LOCK (struct ubifs_info)->umount_mutex

fs/ubifs/shrinker.c shrink_tnc() -> atomic_long_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 4096-ptr_max
PARAM_VALUE 1 v->counter 1-s64max
DATA_SOURCE 0 i r ubifs_destroy_tnc_subtree
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &c->tnc_mutex
LOCK2 &c->umount_mutex
HALF_LOCKED2 global &bch_register_lock
TYPE_LOCK (struct ubifs_info)->tnc_mutex
TYPE_LOCK (struct ubifs_info)->umount_mutex

mm/zsmalloc.c __free_zspage() -> atomic_long_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 4096-ptr_max
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &class->lock
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct size_class)->lock

mm/zsmalloc.c zs_free() -> atomic_long_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 4096-ptr_max
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &of->mutex
HALF_LOCKED2 _T->lock

mm/khugepaged.c mm_dec_nr_ptes() -> atomic_long_sub()

Type Parameter Key Value
PARAM_VALUE 0 i 4096
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &mapping->i_mmap_rwsem
HALF_LOCKED2 &mm->mmap_lock

arch/x86/mm/pgtable.c mm_dec_nr_pmds() -> atomic_long_sub()

Type Parameter Key Value
PARAM_VALUE 0 i 4096
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL

drivers/md/bcache/super.c flash_dev_free() -> atomic_long_sub()

Type Parameter Key Value
PARAM_VALUE 0 i s32min-s32max
PARAM_VALUE 1 v 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 global &bch_register_lock

kernel/bpf/core.c bpf_jit_charge_modmem() -> atomic_long_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 7970477535896326144
DATA_SOURCE 0 i $0
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
UNITS 0 i unit_byte

kernel/bpf/core.c bpf_jit_uncharge_modmem() -> atomic_long_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 7970477535896326144
DATA_SOURCE 0 i $0
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
UNITS 0 i unit_byte

net/xdp/xdp_umem.c xdp_umem_unaccount_pages() -> atomic_long_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
USER_DATA 0 i 0-1048576[c]
UNITS 0 i unit_array_size
HALF_LOCKED2 &xs->mutex