Defined in 3 files as a macro:
- arch/m68k/include/asm/atomic.h, line 209 (as a macro)
- arch/s390/include/asm/atomic.h, line 64 (as a macro)
- arch/x86/include/asm/atomic.h, line 49 (as a macro)
Defined in 3 files as a function:
- arch/m68k/include/asm/atomic.h, line 201 (as a function)
- arch/s390/include/asm/atomic.h, line 60 (as a function)
- arch/x86/include/asm/atomic.h, line 45 (as a function)
Referenced in 1 files:
Smatch caller information:
kernel/rcu/tree.c raw_atomic_sub_and_test() -> arch_atomic_sub_and_test()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | i | 2 |
| PARAM_VALUE | 1 | v | 257930615975178552 |
| PARAM_VALUE | 1 | v->counter | 2 |
| DATA_SOURCE | 0 | i | $0 |
| DATA_SOURCE | 1 | v | $1 |
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| LOCK2 | global &rcu_state.barrier_mutex | ||
| HALF_LOCKED2 | &attr->mutex | ||
| HALF_LOCKED2 | &wg->device_update_lock | ||
| HALF_LOCKED2 | global &fullstop_mutex | ||
| HALF_LOCKED2 | global &init_lock | ||
| HALF_LOCKED2 | global &nfsd_mutex | ||
| HALF_LOCKED2 | global &pernet_ops_rwsem | ||
| HALF_LOCKED2 | global &rcu_fwd_mutex | ||
| HALF_LOCKED2 | global &rcu_state.nocb_mutex | ||
| HALF_LOCKED2 | global &slab_mutex | ||
| HALF_LOCKED2 | global &vboxsf_setup_mutex | ||
| TYPE_LOCK | (struct rcu_state)->barrier_mutex |
fs/btrfs/subpage.c raw_atomic_sub_and_test() -> arch_atomic_sub_and_test()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 1 | v | 4096-ptr_max |
| PARAM_VALUE | 1 | v->counter | s32min-(-1),1-s32max |
| CAPPED_DATA | 0 | i | 1 |
| DATA_SOURCE | 0 | i | $0 |
| DATA_SOURCE | 1 | v | $1 |
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| LOCK2 | &bfs->lock | ||
| LOCK2 | flags | ||
| TYPE_LOCK | (struct btrfs_folio_state)->lock |
mm/huge_memory.c raw_atomic_sub_and_test() -> arch_atomic_sub_and_test()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 1 | v | 4096-ptr_max |
| DATA_SOURCE | 0 | i | $0 |
| DATA_SOURCE | 1 | v | $1 |
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| LOCK2 | irq | ||
| LOCK2 | rcu_read | ||
| HALF_LOCKED2 | &((&xas)->xa)->xa_lock | ||
| HALF_LOCKED2 | &anon_vma->root->rwsem | ||
| HALF_LOCKED2 | &mapping->i_mmap_rwsem |
fs/f2fs/gc.c raw_atomic_sub_and_test() -> arch_atomic_sub_and_test()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | i | 2 |
| PARAM_VALUE | 1 | v | 4096-ptr_max |
| DATA_SOURCE | 0 | i | $0 |
| DATA_SOURCE | 1 | v | $1 |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| LOCK2 | &sbi->gc_lock.internal_rwsem | ||
| HALF_LOCKED2 | &inode->i_rwsem | ||
| HALF_LOCKED2 | &sbi->pin_sem.internal_rwsem | ||
| TYPE_LOCK | (struct f2fs_rwsem)->internal_rwsem |
net/smc/smc_rx.c raw_atomic_sub_and_test() -> arch_atomic_sub_and_test()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 1 | v | 4096-ptr_max |
| DATA_SOURCE | 0 | i | $0 |
| DATA_SOURCE | 1 | v | $1 |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| UNITS | 0 | i | unit_byte |
fs/aio.c raw_atomic_sub_and_test() -> arch_atomic_sub_and_test()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | i | 0-s32max |
| PARAM_VALUE | 1 | v | 2804162339379609696 |
| DATA_SOURCE | 0 | i | $0 |
| DATA_SOURCE | 1 | v | $1 |
| FUZZY_MAX | 0 | i | 0 |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &mm->mmap_lock | ||
| HALF_LOCKED2 | &pool->lock |
mm/rmap.c raw_atomic_sub_and_test() -> arch_atomic_sub_and_test()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 1 | v | 4096-ptr_max |
| DATA_SOURCE | 0 | i | $0 |
| DATA_SOURCE | 1 | v | $1 |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| 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/shmem.c raw_atomic_sub_and_test() -> arch_atomic_sub_and_test()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 1 | v | 4096-ptr_max |
| DATA_SOURCE | 0 | i | $0 |
| DATA_SOURCE | 1 | v | $1 |
| RX_PATH | |||
| TASK_NOT_RUNNING |
drivers/gpu/drm/i915/gt/intel_context.c raw_atomic_sub_and_test() -> arch_atomic_sub_and_test()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | i | 1-2 |
| PARAM_VALUE | 1 | v | 4096-ptr_max |
| DATA_SOURCE | 0 | i | $0 |
| DATA_SOURCE | 1 | v | $1 |
| HARD_MAX | 0 | i | 2 |
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &ce->pin_mutex | ||
| HALF_LOCKED2 | >->perf.lock | ||
| HALF_LOCKED2 | &pxp->tee_mutex | ||
| HALF_LOCKED2 | __flags | ||
| HALF_LOCKED2 | pkt->bb_vma->obj->base.resv | ||
| HALF_LOCKED2 | pkt->heci_pkt_vma->obj->base.resv | ||
| HALF_LOCKED2 | vma->obj->base.resv |
mm/kasan/kasan_test_c.c raw_atomic_sub_and_test() -> arch_atomic_sub_and_test()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | i | 42 |
| PARAM_VALUE | 1 | v | 4096-ptr_max |
| DATA_SOURCE | 0 | i | $0 |
| DATA_SOURCE | 1 | v | $1 |
mm/folio.c raw_atomic_sub_and_test() -> arch_atomic_sub_and_test()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 1 | v | 4096-ptr_max |
| DATA_SOURCE | 0 | i | $0 |
| DATA_SOURCE | 1 | v | $1 |
| RX_PATH | |||
| TASK_NOT_RUNNING |
drivers/block/drbd/drbd_req.c raw_atomic_sub_and_test() -> arch_atomic_sub_and_test()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | i | 1-5 |
| PARAM_VALUE | 1 | v | 4096-ptr_max |
| DATA_SOURCE | 0 | i | $0 |
| DATA_SOURCE | 1 | v | $1 |
| FUZZY_MAX | 0 | i | 1 |
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &resource->req_lock | ||
| HALF_LOCKED2 | irq | ||
| TYPE_LOCK | (struct drbd_resource)->req_lock |
mm/filemap.c raw_atomic_sub_and_test() -> arch_atomic_sub_and_test()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 1 | v | 4096-ptr_max |
| DATA_SOURCE | 0 | i | $0 |
| DATA_SOURCE | 1 | v | $1 |
| RX_PATH | |||
| TASK_NOT_RUNNING |
mm/page_frag_cache.c raw_atomic_sub_and_test() -> arch_atomic_sub_and_test()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 1 | v | 4096-ptr_max |
| DATA_SOURCE | 0 | i | $0 |
| DATA_SOURCE | 1 | v | $1 |
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING |
drivers/most/core.c raw_atomic_sub_and_test() -> arch_atomic_sub_and_test()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | i | 1 |
| PARAM_VALUE | 1 | v | 4096-ptr_max |
| DATA_SOURCE | 0 | i | $0 |
| DATA_SOURCE | 1 | v | $1 |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &c->start_mutex |
mm/truncate.c raw_atomic_sub_and_test() -> arch_atomic_sub_and_test()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 1 | v | 4096-ptr_max |
| DATA_SOURCE | 0 | i | $0 |
| DATA_SOURCE | 1 | v | $1 |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &folio->private->lock |
fs/smb/server/vfs_cache.c raw_atomic_sub_and_test() -> arch_atomic_sub_and_test()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | i | 1-2 |
| PARAM_VALUE | 1 | v | 4096-ptr_max |
| DATA_SOURCE | 0 | i | $0 |
| DATA_SOURCE | 1 | v | $1 |
| RX_PATH | |||
| TASK_NOT_RUNNING |
fs/gfs2/lops.c raw_atomic_sub_and_test() -> arch_atomic_sub_and_test()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | i | 2 |
| PARAM_VALUE | 1 | v | 4096-ptr_max |
| DATA_SOURCE | 0 | i | $0 |
| DATA_SOURCE | 1 | v | $1 |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| HALF_LOCKED2 | &pool->lock | ||
| HALF_LOCKED2 | &sdp->sd_freeze_mutex |
mm/gup.c raw_atomic_sub_and_test() -> arch_atomic_sub_and_test()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 1 | v | 4096-ptr_max |
| DATA_SOURCE | 0 | i | $0 |
| DATA_SOURCE | 1 | v | $1 |
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| USER_DATA | 0 | i | s32min-s32max[c] |
| UNITS | 0 | i | unit_page |
| HALF_LOCKED2 | flags | ||
| HALF_LOCKED2 | rcu_read |
fs/iomap/buffered-io.c raw_atomic_sub_and_test() -> arch_atomic_sub_and_test()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 1 | v | 4096-ptr_max |
| DATA_SOURCE | 0 | i | $0 |
| DATA_SOURCE | 1 | v | $1 |
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| UNITS | 0 | i | unit_byte |
| HALF_LOCKED2 | &fi->lock |
fs/f2fs/file.c raw_atomic_sub_and_test() -> arch_atomic_sub_and_test()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | i | 2 |
| PARAM_VALUE | 1 | v | 4096-ptr_max |
| DATA_SOURCE | 0 | i | $0 |
| DATA_SOURCE | 1 | v | $1 |
| LOCK2 | &inode->i_rwsem | ||
| TYPE_LOCK | (struct inode)->i_rwsem |
kernel/rcu/update.c raw_atomic_sub_and_test() -> arch_atomic_sub_and_test()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | i | 2 |
| PARAM_VALUE | 1 | v | 295581862719967784 |
| DATA_SOURCE | 0 | i | $0 |
| DATA_SOURCE | 1 | v | $1 |
| LOCK2 | &rtp->barrier_q_mutex | ||
| HALF_LOCKED2 | &pool->lock | ||
| HALF_LOCKED2 | global &fullstop_mutex | ||
| HALF_LOCKED2 | global &rcu_fwd_mutex | ||
| TYPE_LOCK | (struct rcu_tasks)->barrier_q_mutex |
net/core/dev.c raw_atomic_sub_and_test() -> arch_atomic_sub_and_test()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | i | 1-s32max |
| PARAM_VALUE | 1 | v | 1317371219594612736 |
| DATA_SOURCE | 0 | i | $0 |
| DATA_SOURCE | 1 | v | $1 |
mm/khugepaged.c raw_atomic_sub_and_test() -> arch_atomic_sub_and_test()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 1 | v | 4096-ptr_max |
| DATA_SOURCE | 0 | i | $0 |
| DATA_SOURCE | 1 | v | $1 |
| NOSPEC | 0 | i | |
| NOSPEC | 0 | i | |
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| USER_DATA | 0 | i | 1-s32max[c] |
| HALF_LOCKED2 | &mm->mmap_lock |
mm/swap_state.c raw_atomic_sub_and_test() -> arch_atomic_sub_and_test()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 1 | v | 4096-ptr_max |
| DATA_SOURCE | 0 | i | $0 |
| DATA_SOURCE | 1 | v | $1 |
| RX_PATH | |||
| TASK_NOT_RUNNING |