Documented in 1 files:

Defined in 1 files as a function:

Referenced in 36 files:

Smatch caller information:

drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c amdgpu_vram_mgr_del() -> atomic64_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL

lib/atomic64_test.c test_atomic64() -> atomic64_sub()

Type Parameter Key Value
PARAM_VALUE 0 i 1229782938533634594
PARAM_VALUE 1 v 4852880703011659776
PARAM_VALUE 1 v->counter (-6151051535892492275)
NOCHECK_CALL

lib/atomic64_test.c test_atomic64() -> atomic64_sub()

Type Parameter Key Value
PARAM_VALUE 0 i (-1)
PARAM_VALUE 1 v 4852880703011659776
PARAM_VALUE 1 v->counter (-6151051535892492275)
NOCHECK_CALL

io_uring/rsrc.c io_unaccount_mem() -> atomic64_sub()

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

drivers/gpu/drm/amd/amdgpu/amdgpu_object.c amdgpu_bo_unpin() -> atomic64_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
USER_DATA 0 i 0-s64max[c]
HALF_LOCKED2 &crtc->mutex
HALF_LOCKED2 &mem->process_info->lock
HALF_LOCKED2 &p->mutex
HALF_LOCKED2 &plane->mutex
HALF_LOCKED2 *bo->tbo.base.resv
HALF_LOCKED2 *bo_ptr->tbo.base.resv
HALF_LOCKED2 bo->tbo.base.resv

drivers/gpu/drm/amd/amdgpu/amdgpu_object.c amdgpu_bo_unpin() -> atomic64_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
USER_DATA 0 i 0-s64max[c]
HALF_LOCKED2 &crtc->mutex
HALF_LOCKED2 &mem->process_info->lock
HALF_LOCKED2 &p->mutex
HALF_LOCKED2 &plane->mutex
HALF_LOCKED2 *bo->tbo.base.resv
HALF_LOCKED2 *bo_ptr->tbo.base.resv
HALF_LOCKED2 bo->tbo.base.resv

drivers/gpu/drm/amd/amdgpu/amdgpu_object.c amdgpu_bo_unpin() -> atomic64_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
USER_DATA 0 i 0-s64max[c]
HALF_LOCKED2 &crtc->mutex
HALF_LOCKED2 &mem->process_info->lock
HALF_LOCKED2 &p->mutex
HALF_LOCKED2 &plane->mutex
HALF_LOCKED2 *bo->tbo.base.resv
HALF_LOCKED2 *bo_ptr->tbo.base.resv
HALF_LOCKED2 bo->tbo.base.resv

fs/btrfs/volumes.c btrfs_init_new_device() -> atomic64_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 4096-ptr_max
CAPABLE 0 21
NOCHECK_CALL
UNITS 0 i unit_byte
LOCK2 &fs_info->chunk_mutex
LOCK2 &fs_info->fs_devices->device_list_mutex
HALF_LOCKED2 &sb->s_umount
HALF_LOCKED2 global &uuid_mutex
TYPE_LOCK (struct btrfs_fs_devices)->device_list_mutex
TYPE_LOCK (struct btrfs_fs_info)->chunk_mutex

fs/btrfs/volumes.c btrfs_shrink_device() -> atomic64_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 4096-ptr_max
CAPABLE 0 21
NOCHECK_CALL
UNITS 0 i unit_byte
LOCK2 &fs_info->chunk_mutex
TYPE_LOCK (struct btrfs_fs_info)->chunk_mutex

fs/btrfs/volumes.c create_chunk() -> atomic64_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 4096-ptr_max
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &fs_info->chunk_mutex
HALF_LOCKED2 &sb->s_umount
HALF_LOCKED2 global &uuid_mutex
TYPE_LOCK (struct btrfs_fs_info)->chunk_mutex

drivers/vhost/vdpa.c vhost_vdpa_pa_unmap() -> atomic64_sub()

Type Parameter Key Value
PARAM_VALUE 0 i 0-4503599627370495
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &dev->mutex

fs/ntfs3/frecord.c ntfs_sub_da() -> atomic64_sub()

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

fs/f2fs/inode.c f2fs_post_evict_inode() -> atomic64_sub()

Type Parameter Key Value
PARAM_VALUE 0 i s32min-s32max
PARAM_VALUE 1 v 4096-ptr_max

net/netfilter/ipset/ip_set_core.c ip_set_comment_free() -> atomic64_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
UNITS 0 i unit_byte

net/netfilter/ipset/ip_set_core.c ip_set_init_comment() -> atomic64_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 4096-ptr_max
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
UNITS 0 i unit_byte
HALF_LOCKED2 bh

fs/f2fs/segment.c release_atomic_write_cnt() -> atomic64_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &inode->i_rwsem

drivers/misc/vmw_balloon.c vmballoon_deflate() -> atomic64_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &b->conf_sem

drivers/iommu/iommufd/pages.c iopt_pages_update_pinned() -> atomic64_sub()

Type Parameter Key Value
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

fs/ntfs/lcnalloc.c ntfs_dec_free_clusters() -> atomic64_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 4096-ptr_max
BUF_SIZE 0 i (-1),1-s32max
DATA_SOURCE 0 i $1
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
NO_OVERFLOW_SIMPLE 0 i
UNITS 0 i unit_byte
LOCK2 &vol->lcnbmp_lock
HALF_LOCKED2 &mft_ni->mrec_lock
HALF_LOCKED2 &ni->runlist.lock
TYPE_LOCK (struct ntfs_volume)->lcnbmp_lock

fs/ntfs/lcnalloc.c ntfs_release_dirty_clusters() -> atomic64_sub()

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

fs/xfs/xfs_log.c xlog_grant_sub_space() -> atomic64_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

drivers/virtio/virtio_mem.c virtio_mem_add_memory() -> atomic64_sub()

Type Parameter Key Value
PARAM_VALUE 0 i s64min-0,67108864-s64max
PARAM_VALUE 1 v 4096-ptr_max
CAPPED_DATA 0 i 1
DATA_SOURCE 0 i $2
NOCHECK_CALL
LOCK2 &pool->lock

drivers/virtio/virtio_mem.c virtio_mem_memory_notifier_cb() -> atomic64_sub()

Type Parameter Key Value
PARAM_VALUE 0 i s64min-(-4096),0,4096-s64max
PARAM_VALUE 1 v 4096-ptr_max
CAPPED_DATA 0 i 1
BIT_INFO 0 i 0x0,0xfffffffffffff000
NOCHECK_CALL

drivers/virtio/virtio_mem.c virtio_mem_offline_and_remove_memory() -> atomic64_sub()

Type Parameter Key Value
PARAM_VALUE 0 i s64min-0,67108864-s64max
PARAM_VALUE 1 v 4096-ptr_max
DATA_SOURCE 0 i $2
NOCHECK_CALL
LOCK2 &pool->lock

drivers/virtio/virtio_mem.c virtio_mem_remove_memory() -> atomic64_sub()

Type Parameter Key Value
PARAM_VALUE 0 i 67108864-68719476736
PARAM_VALUE 1 v 4096-ptr_max
DATA_SOURCE 0 i $2
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &pool->lock

drivers/gpu/drm/vmwgfx/vmwgfx_cotable.c vmw_cotable_resize() -> atomic64_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &dev_priv->cmdbuf_mutex
HALF_LOCKED2 bo->base.resv

drivers/gpu/drm/vmwgfx/vmwgfx_cotable.c vmw_cotable_resize() -> atomic64_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &dev_priv->cmdbuf_mutex

fs/f2fs/data.c f2fs_i_compr_blocks_update() -> atomic64_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &fio->sbi->cp_rwsem.internal_rwsem
HALF_LOCKED2 &mapping->invalidate_lock
HALF_LOCKED2 &sbi->cp_rwsem.internal_rwsem
HALF_LOCKED2 &sbi->writepages

fs/ntfs3/attrib.c ntfs_sub_da() -> atomic64_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 0-s64max[c][u]
HALF_LOCKED2 &inode->i_rwsem
HALF_LOCKED2 &ni->file.run_lock
HALF_LOCKED2 &ni->ni_lock

drivers/net/netdevsim/fib.c nsim_nexthop_account() -> atomic64_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 4096-ptr_max
CAPPED_DATA 0 i 1
DATA_SOURCE 0 i $1
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
UNITS 0 i unit_array_size
HALF_LOCKED2 &data->nh_lock

drivers/net/netdevsim/fib.c nsim_nexthop_account() -> atomic64_sub()

Type Parameter Key Value
PARAM_VALUE 0 i 0-s32max
PARAM_VALUE 1 v 4096-ptr_max
CAPPED_DATA 0 i 1
FUZZY_MAX 0 i 0
RX_PATH
NOCHECK_CALL
UNITS 0 i unit_array_size
LOCK2 &data->nh_lock
TYPE_LOCK (struct nsim_fib_data)->nh_lock

drivers/infiniband/core/umem.c __ib_umem_get_va() -> atomic64_sub()

Type Parameter Key Value
PARAM_VALUE 0 i 1-4294967295
CAPPED_DATA 0 i 1
DATA_SOURCE 0 i r ib_umem_num_pages
CAPABLE 0 14
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
USER_DATA 0 i 1-4294967295
HALF_LOCKED2 &context->db_page_mutex

drivers/infiniband/core/umem.c __ib_umem_get_va() -> atomic64_sub()

Type Parameter Key Value
PARAM_VALUE 0 i 0-4503599627370495
CAPPED_DATA 0 i 1
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
USER_DATA 0 i 0-4503599627370495
HALF_LOCKED2 &context->db_page_mutex

drivers/infiniband/core/umem.c ib_umem_release() -> atomic64_sub()

Type Parameter Key Value
PARAM_VALUE 0 i 0-4503599627370495
CAPPED_DATA 0 i 1
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
USER_DATA 0 i 0-4503599627370495
HALF_LOCKED2 &context->db_page_mutex
HALF_LOCKED2 &context->page_mutex
HALF_LOCKED2 &cq->resize_mutex
HALF_LOCKED2 &ctx->dbrecords_page_mutex

fs/ntfs/iomap.c ntfs_release_dirty_clusters() -> atomic64_sub()

Type Parameter Key Value
PARAM_VALUE 0 i 1-s64max
PARAM_VALUE 1 v 4096-ptr_max
PARAM_VALUE 1 v->counter 1-s64max
CAPPED_DATA 0 i 1
CAPPED_DATA 0 i 1
DATA_SOURCE 0 i $1
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
UNITS 0 i unit_byte

drivers/accel/amdxdna/amdxdna_ubuf.c amdxdna_get_ubuf() -> atomic64_sub()

Type Parameter Key Value
PARAM_VALUE 0 i 0-4503599627370495
NOCHECK_CALL
NO_OVERFLOW_SIMPLE 0 i

drivers/accel/amdxdna/amdxdna_ubuf.c amdxdna_ubuf_release() -> atomic64_sub()

Type Parameter Key Value
CAPPED_DATA 0 i 1
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL

fs/ext4/mballoc.c ext4_mb_mark_context() -> atomic64_sub()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
USER_DATA 0 i 0-u32max
UNITS 0 i unit_byte

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

Type Parameter Key Value
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() -> atomic64_sub()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
UNITS 0 i unit_page
HALF_LOCKED2 _T->lock

drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_chardev.c kfd_ioctl_free_memory_of_gpu() -> atomic64_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 4096-ptr_max
NOCHECK_CALL
LOCK2 &p->mutex
TYPE_LOCK (struct kfd_process)->mutex

drivers/vdpa/vdpa_user/vduse_dev.c vduse_dev_dereg_umem() -> atomic64_sub()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
UNITS 0 i unit_array_size
LOCK2 &dev->domain_lock
TYPE_LOCK (struct vduse_dev)->domain_lock

block/blk-cgroup.c blkcg_scale_delay() -> atomic64_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 4096-ptr_max
CAPPED_DATA 0 i 1
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL

fs/ntfs/mft.c ntfs_dec_free_mft_records() -> atomic64_sub()

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

fs/smb/client/cached_dir.c free_cached_dir() -> atomic64_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

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

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

drivers/block/zram/zram_drv.c slot_free() -> atomic64_sub()

Type Parameter Key Value
PARAM_VALUE 0 i 0-8191
PARAM_VALUE 1 v 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &of->mutex
HALF_LOCKED2 _T->lock

drivers/block/zram/zram_drv.c zram_writeback_complete() -> atomic64_sub()

Type Parameter Key Value
PARAM_VALUE 0 i 0-8191
PARAM_VALUE 1 v 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &of->mutex
LOCK2 _T->lock
HALF_LOCKED2 &of->prealloc_mutex
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct kernfs_open_file)->mutex

fs/ntfs/inode.c ntfs_release_dirty_clusters() -> atomic64_sub()

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

drivers/infiniband/hw/usnic/usnic_uiom.c usnic_uiom_get_pages() -> atomic64_sub()

Type Parameter Key Value
PARAM_VALUE 0 i (-2147483646)-4503599627370495
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
USER_DATA 0 i (-1048575)-4503599627370495
UNITS 0 i unit_page
LOCK2 &mm->mmap_lock
TYPE_LOCK (struct mm_struct)->mmap_lock

drivers/infiniband/hw/usnic/usnic_uiom.c usnic_uiom_reg_release() -> atomic64_sub()

Type Parameter Key Value
PARAM_VALUE 0 i 0-4503599627370495
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL

drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_svm.c svm_range_bo_release() -> atomic64_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL

fs/f2fs/file.c f2fs_i_compr_blocks_update() -> atomic64_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
UNITS 0 i unit_page
HALF_LOCKED2 &inode->i_mapping->invalidate_lock
HALF_LOCKED2 &inode->i_rwsem
HALF_LOCKED2 &sbi->cp_rwsem.internal_rwsem

drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c vmw_execbuf_ioctl() -> atomic64_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 4096-ptr_max
NOCHECK_CALL

drivers/accel/habanalabs/common/memory.c free_device_memory() -> atomic64_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 4096-ptr_max
NOCHECK_CALL
UNITS 0 i unit_byte

drivers/accel/habanalabs/common/memory.c free_device_memory() -> atomic64_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 4096-ptr_max
NOCHECK_CALL
UNITS 0 i unit_byte

drivers/accel/habanalabs/common/memory.c hl_mem_ioctl() -> atomic64_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 4096-ptr_max
NOCHECK_CALL
USER_DATA 0 i s64min-s64max[u]

drivers/accel/habanalabs/common/memory.c hl_mem_ioctl() -> atomic64_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 4096-ptr_max
NOCHECK_CALL
USER_DATA 0 i s64min-s64max[u]

drivers/accel/habanalabs/common/memory.c hl_vm_ctx_fini() -> atomic64_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 4096-ptr_max
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
UNITS 0 i unit_byte
LOCK2 &vm->idr_lock
HALF_LOCKED2 &hdev->fpriv_list_lock
TYPE_LOCK (struct hl_vm)->idr_lock

drivers/infiniband/hw/hfi1/user_pages.c hfi1_release_user_pages() -> atomic64_sub()

Type Parameter Key Value
DATA_SOURCE 0 i $2
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
USER_DATA 0 i 0-s32max

drivers/scsi/snic/snic_scsi.c snic_hba_reset_scsi_cleanup() -> atomic64_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL

drivers/scsi/snic/snic_scsi.c snic_hba_reset_scsi_cleanup() -> atomic64_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL

fs/nilfs2/inode.c nilfs_inode_sub_blocks() -> atomic64_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 4096-ptr_max
DATA_SOURCE 0 i $1
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &bmap->b_sem
HALF_LOCKED2 &btree->b_sem
TYPE_LOCK (struct nilfs_bmap)->b_sem

fs/f2fs/compress.c f2fs_i_compr_blocks_update() -> atomic64_sub()

Type Parameter Key Value
PARAM_VALUE 1 v 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
UNITS 0 i unit_page
HALF_LOCKED2 &mapping->invalidate_lock
HALF_LOCKED2 &sbi->cp_rwsem.internal_rwsem
HALF_LOCKED2 &sbi->node_write.internal_rwsem
HALF_LOCKED2 &sbi->writepages
TYPE_LOCK (struct f2fs_rwsem)->internal_rwsem