Documented in 1 files:

Defined in 1 files as a function:

Referenced in 47 files:

Smatch caller information:

fs/gfs2/log.c __gfs2_log_reserve() -> atomic_sub_return()

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

net/rds/ib_send.c rds_ib_sub_signaled() -> atomic_sub_return()

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

lib/atomic64_test.c test_atomic() -> atomic_sub_return()

Type Parameter Key Value
PARAM_VALUE 0 i 286335522
PARAM_VALUE 1 v 244908970501345280
PARAM_VALUE 1 v->counter (-1432153289)

lib/atomic64_test.c test_atomic() -> atomic_sub_return()

Type Parameter Key Value
PARAM_VALUE 0 i (-1)
PARAM_VALUE 1 v 244908970501345280
PARAM_VALUE 1 v->counter (-1432153289)

drivers/video/fbdev/sh_mobile_lcdcfb.c sh_mobile_lcdc_clk_off() -> atomic_sub_return()

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

drivers/w1/slaves/w1_therm.c w1_therm_remove_slave() -> atomic_sub_return()

Type Parameter Key Value
PARAM_VALUE 0 i 1
PARAM_VALUE 1 v 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
LOCK2 &dev->list_mutex
HALF_LOCKED2 &dev->bus_mutex
TYPE_LOCK (struct w1_master)->list_mutex

drivers/net/ethernet/microsoft/mana/mana_en.c mana_poll_tx_cq() -> atomic_sub_return()

Type Parameter Key Value
PARAM_VALUE 1 v 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &ni->dev_lock
HALF_LOCKED2 bh
HALF_LOCKED2 rcu_read

fs/inode.c iput_not_last() -> atomic_sub_return()

Type Parameter Key Value
PARAM_VALUE 0 i 1
PARAM_VALUE 1 v 4096-ptr_max
PARAM_VALUE 1 v->counter 2-s32max
PREEMPT_ADD
LOCK2 &sb->s_inode_list_lock
TYPE_LOCK (struct super_block)->s_inode_list_lock

net/core/skbuff.c skb_data_unref() -> atomic_sub_return()

Type Parameter Key Value
PARAM_VALUE 0 i 1,65537
PARAM_VALUE 1 v 4096-ptr_max
BIT_INFO 0 i 0x1,0x10001
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING

fs/btrfs/inode.c submit_compressed_extents() -> atomic_sub_return()

Type Parameter Key Value
PARAM_VALUE 1 v 4096-ptr_max
UNITS 0 i unit_page
HALF_LOCKED2 &pool->lock

drivers/gpu/drm/i915/i915_vma.c __vma_put_pages() -> atomic_sub_return()

Type Parameter Key Value
PARAM_VALUE 1 v 4096-ptr_max
DATA_SOURCE 0 i $1
BIT_INFO 0 i 0x0,0xff0000ff
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 obj->base.resv
HALF_LOCKED2 vma->obj->base.resv

net/sched/sch_taprio.c taprio_update_budgets() -> atomic_sub_return()

Type Parameter Key Value
PARAM_VALUE 1 v 4096-ptr_max
DATA_SOURCE 0 i $1
RX_PATH
TASK_NOT_RUNNING
LOCK2 rcu_read
HALF_LOCKED2 &sch->seqlock
HALF_LOCKED2 bh

drivers/w1/w1_netlink.c w1_unref_block() -> atomic_sub_return()

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

drivers/vhost/net.c vhost_net_ubuf_put() -> atomic_sub_return()

Type Parameter Key Value
PARAM_VALUE 0 i 1
PARAM_VALUE 1 v 1-u64max
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
LOCK2 rcu_read
HALF_LOCKED2 &vq->mutex

drivers/block/drbd/drbd_receiver.c drbd_free_pages() -> atomic_sub_return()

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

drivers/md/bcache/request.c bch_data_insert_start() -> atomic_sub_return()

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

drivers/xen/gntdev.c __unmap_grant_pages_done() -> atomic_sub_return()

Type Parameter Key Value
PARAM_VALUE 0 i 0-s32max
PARAM_VALUE 1 v 4096-ptr_max
FUZZY_MAX 0 i 0
RX_PATH
TASK_NOT_RUNNING

drivers/base/power/runtime.c rpm_drop_usage_count() -> atomic_sub_return()

Type Parameter Key Value
PARAM_VALUE 0 i 1
PARAM_VALUE 1 v 4096-ptr_max
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &dev->power.lock
HALF_LOCKED2 irq

drivers/tty/tty_buffer.c tty_buffer_free() -> atomic_sub_return()

Type Parameter Key Value
PARAM_VALUE 1 v 4096-ptr_max
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
UNITS 0 i unit_byte
LOCK2 &buf->lock
TYPE_LOCK (struct tty_bufhead)->lock

fs/smb/smbdirect/socket.c smbdirect_socket_wait_for_credits() -> atomic_sub_return()

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

net/vmw_vsock/virtio_transport.c virtio_transport_cancel_pkt() -> atomic_sub_return()

Type Parameter Key Value
PARAM_VALUE 0 i 1-s32max
PARAM_VALUE 1 v 4096-ptr_max
DATA_SOURCE 0 i r virtio_transport_purge_skbs
RX_PATH
TASK_NOT_RUNNING
LOCK2 rcu_read
LOCK2 sk

drivers/scsi/elx/efct/efct_lio.c efct_lio_release_cmd() -> atomic_sub_return()

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

drivers/scsi/elx/efct/efct_lio.c efct_scsi_del_initiator() -> atomic_sub_return()

Type Parameter Key Value
PARAM_VALUE 0 i 1
PARAM_VALUE 1 v 4096-ptr_max
TASK_NOT_RUNNING
HALF_LOCKED2 &buffer->mutex
HALF_LOCKED2 &efc->lock
HALF_LOCKED2 &frag->frag_sem
HALF_LOCKED2 flags

drivers/scsi/elx/efct/efct_scsi.c efct_scsi_check_pending() -> atomic_sub_return()

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

drivers/scsi/elx/efct/efct_scsi.c efct_scsi_check_pending() -> atomic_sub_return()

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

drivers/scsi/elx/efct/efct_scsi.c efct_scsi_check_pending() -> atomic_sub_return()

Type Parameter Key Value
PARAM_VALUE 0 i 1
PARAM_VALUE 1 v 4096-ptr_max
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &xport->io_pending_lock
LOCK2 flags
TYPE_LOCK (struct efct_xport)->io_pending_lock

drivers/scsi/elx/efct/efct_scsi.c efct_scsi_check_pending() -> atomic_sub_return()

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

drivers/scsi/elx/efct/efct_scsi.c efct_scsi_dispatch_pending() -> atomic_sub_return()

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

net/mac80211/sta_info.c ieee80211_sta_update_pending_airtime() -> atomic_sub_return()

Type Parameter Key Value
PARAM_VALUE 0 i 4-4092
PARAM_VALUE 1 v 4096-ptr_max
DATA_SOURCE 0 i $3
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 bh
HALF_LOCKED2 rcu_read

net/mac80211/sta_info.c ieee80211_sta_update_pending_airtime() -> atomic_sub_return()

Type Parameter Key Value
PARAM_VALUE 0 i 4-4092
PARAM_VALUE 1 v 4096-ptr_max
DATA_SOURCE 0 i $3
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 bh
HALF_LOCKED2 rcu_read

net/mac80211/sta_info.c ieee80211_sta_update_pending_airtime() -> atomic_sub_return()

Type Parameter Key Value
PARAM_VALUE 0 i 4-4092
DATA_SOURCE 0 i $3
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 bh
HALF_LOCKED2 rcu_read

drivers/crypto/virtio/virtio_crypto_mgr.c virtcrypto_dev_put() -> atomic_sub_return()

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

io_uring/poll.c io_poll_check_events() -> atomic_sub_return()

Type Parameter Key Value
PARAM_VALUE 0 i s32min-1073741823
PARAM_VALUE 1 v 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &ctx->uring_lock
HALF_LOCKED2 _T->lock

net/9p/trans_rdma.c rdma_request() -> atomic_sub_return()

Type Parameter Key Value
PARAM_VALUE 0 i 1
PARAM_VALUE 1 v 4096-ptr_max
PARAM_VALUE 1 v->counter 1-s32max
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &client->trans->sq_sem
HALF_LOCKED2 &inode->i_rwsem
HALF_LOCKED2 &v9ses->rename_sem

drivers/infiniband/ulp/rtrs/rtrs-srv.c rtrs_srv_resp_rdma() -> atomic_sub_return()

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

drivers/w1/w1.c w1_unref_slave() -> atomic_sub_return()

Type Parameter Key Value
PARAM_VALUE 0 i 1
PARAM_VALUE 1 v 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
LOCK2 &dev->list_mutex
HALF_LOCKED2 &dev->bus_mutex
TYPE_LOCK (struct w1_master)->list_mutex

drivers/vhost/vsock.c vhost_transport_cancel_pkt() -> atomic_sub_return()

Type Parameter Key Value
PARAM_VALUE 0 i 1-s32max
PARAM_VALUE 1 v 4096-ptr_max
DATA_SOURCE 0 i r virtio_transport_purge_skbs
RX_PATH
TASK_NOT_RUNNING
LOCK2 rcu_read
LOCK2 sk

drivers/infiniband/ulp/srpt/ib_srpt.c srpt_queue_response() -> atomic_sub_return()

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

drivers/infiniband/ulp/srpt/ib_srpt.c srpt_write_pending() -> atomic_sub_return()

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

drivers/scsi/elx/efct/efct_io.c efct_io_pool_io_free() -> atomic_sub_return()

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

drivers/net/wwan/t7xx/t7xx_hif_dpmaif_tx.c t7xx_dpmaif_add_skb_to_ring() -> atomic_sub_return()

Type Parameter Key Value
PARAM_VALUE 1 v 4096-ptr_max

drivers/net/wireless/ath/carl9170/tx.c carl9170_alloc_dev_space() -> atomic_sub_return()

Type Parameter Key Value
PARAM_VALUE 1 v 4096-ptr_max
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
LOCK2 &queue->lock
LOCK2 bh
TYPE_LOCK (struct sk_buff_head)->lock

drivers/gpu/drm/i915/gt/gen6_ppgtt.c gen6_ppgtt_clear_range() -> atomic_sub_return()

Type Parameter Key Value
PARAM_VALUE 0 i 1-1024
PARAM_VALUE 1 v 4096-ptr_max
CAPPED_DATA 0 i 1
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &ggtt->error_mutex
HALF_LOCKED2 &vm->mutex
HALF_LOCKED2 obj->base.resv

drivers/md/bcache/btree.c btree_complete_write() -> atomic_sub_return()

Type Parameter Key Value
PARAM_VALUE 0 i s32min-(-1),1-s32max
PARAM_VALUE 1 v 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &b->write_lock
HALF_LOCKED2 &c->bucket_lock

drivers/crypto/intel/qat/qat_common/adf_dev_mgr.c adf_dev_put() -> atomic_sub_return()

Type Parameter Key Value
PARAM_VALUE 0 i 1
PARAM_VALUE 1 v 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &accel_dev->state_lock
HALF_LOCKED2 global &service_lock

drivers/nvme/target/rdma.c nvmet_rdma_execute_command() -> atomic_sub_return()

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

io_uring/waitid.c io_waitid_drop_issue_ref() -> atomic_sub_return()

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

drivers/net/ethernet/huawei/hinic/hinic_hw_wq.c hinic_get_wqe() -> atomic_sub_return()

Type Parameter Key Value
PARAM_VALUE 1 v 4096-ptr_max
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &cmdq->cmdq_lock
HALF_LOCKED2 bh

drivers/scsi/mpi3mr/mpi3mr_os.c mpi3mr_process_op_reply_desc() -> atomic_sub_return()

Type Parameter Key Value
PARAM_VALUE 0 i 0-8388607
PARAM_VALUE 1 v 4096-ptr_max
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &drv_cmd->mutex
HALF_LOCKED2 &op_req_q->q_lock
HALF_LOCKED2 flags

drivers/scsi/mpi3mr/mpi3mr_os.c mpi3mr_process_op_reply_desc() -> atomic_sub_return()

Type Parameter Key Value
PARAM_VALUE 0 i 0-8388607
PARAM_VALUE 1 v 4096-ptr_max
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &drv_cmd->mutex
HALF_LOCKED2 &op_req_q->q_lock
HALF_LOCKED2 flags

net/sunrpc/xprtrdma/svc_rdma_sendto.c svc_rdma_sq_wait() -> atomic_sub_return()

Type Parameter Key Value
PARAM_VALUE 0 i 0-1
PARAM_VALUE 1 v 4096-ptr_max
DATA_SOURCE 0 i $2
HARD_MAX 0 i 1
RX_PATH
TASK_NOT_RUNNING
UNITS 0 i unit_byte

net/sunrpc/xprtrdma/svc_rdma_sendto.c svc_rdma_sq_wait() -> atomic_sub_return()

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

net/sunrpc/xprtrdma/svc_rdma_sendto.c svc_rdma_sq_wait() -> atomic_sub_return()

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

kernel/module/main.c try_release_module_ref() -> atomic_sub_return()

Type Parameter Key Value
PARAM_VALUE 0 i 1
PARAM_VALUE 1 v 4096-ptr_max
CAPABLE 0 16
LOCK2 global &module_mutex