Documented in 1 files:

Defined in 1 files as a prototype:

Defined in 1 files as a function:

Referenced in 27 files:

Smatch caller information:

mm/memcontrol.c obj_cgroup_release() -> percpu_ref_exit()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
PARAM_VALUE 0 ref->percpu_count_ptr 1-u64max
DATA_SOURCE 0 ref $0
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
NO_OVERFLOW_SIMPLE 0 ref->percpu_count_ptr
LOCK2 rcu_read
HALF_LOCKED2 &ctx->map_changing_lock
HALF_LOCKED2 &packet->qp->r_lock
HALF_LOCKED2 &pool->lock
HALF_LOCKED2 &q->queue_lock
HALF_LOCKED2 &qp->s_lock
HALF_LOCKED2 &tg_pt_gp->tg_pt_gp_lock
HALF_LOCKED2 &tg_pt_gp->tg_pt_gp_transition_mutex
HALF_LOCKED2 flags
HALF_LOCKED2 global &mf_mutex
HALF_LOCKED2 global &pcpu_lock
HALF_LOCKED2 irq

drivers/md/md-llbitmap.c llbitmap_free_pages() -> percpu_ref_exit()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &mddev->bitmap_info.mutex
HALF_LOCKED2 &mddev->reconfig_mutex
HALF_LOCKED2 &of->mutex
TYPE_LOCK (struct mddev)->bitmap_info.mutex

net/core/devmem.c __net_devmem_dmabuf_binding_free() -> percpu_ref_exit()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
NOCHECK_CALL
HALF_LOCKED2 &pool->lock

net/core/devmem.c net_devmem_bind_dmabuf() -> percpu_ref_exit()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
PARAM_VALUE 0 ref->data 4096-ptr_max
PARAM_VALUE 0 ref->percpu_count_ptr 4096-18446744073709547523
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &dev->lock
LOCK2 &priv->lock
HALF_LOCKED2 &devlink->lock
HALF_LOCKED2 &net->xfrm.xfrm_cfg_mutex
HALF_LOCKED2 global &audit_cmd_mutex.lock
HALF_LOCKED2 global &cb_lock
HALF_LOCKED2 global &crypto_cfg_mutex
HALF_LOCKED2 global &dpll_lock
HALF_LOCKED2 global &hwsim_phys_lock
HALF_LOCKED2 global &net_dm_mutex
HALF_LOCKED2 global &rtnl_mutex
HALF_LOCKED2 global &rx_queue_mutex
HALF_LOCKED2 rcu_read
TYPE_LOCK (struct netdev_nl_sock)->lock

drivers/md/md.c mddev_destroy() -> percpu_ref_exit()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &disks_mutex

drivers/md/md.c mddev_destroy() -> percpu_ref_exit()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &disks_mutex

drivers/md/md.c mddev_init() -> percpu_ref_exit()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
PARAM_VALUE 0 ref->data 4096-ptr_max
PARAM_VALUE 0 ref->percpu_count_ptr 4096-18446744073709547523
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &disks_mutex

drivers/md/md.c mddev_init() -> percpu_ref_exit()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
PARAM_VALUE 0 ref->data 4096-ptr_max
PARAM_VALUE 0 ref->percpu_count_ptr 4096-18446744073709547523
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &disks_mutex

mm/swapfile.c alloc_swap_info() -> percpu_ref_exit()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
PARAM_VALUE 0 ref->data 4096-ptr_max
PARAM_VALUE 0 ref->percpu_count_ptr 4096-18446744073709547523
NOCHECK_CALL

mm/swapfile.c alloc_swap_info() -> percpu_ref_exit()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
PARAM_VALUE 0 ref->data 4096-ptr_max
PARAM_VALUE 0 ref->percpu_count_ptr 4096-18446744073709547523
NOCHECK_CALL

mm/backing-dev.c cgwb_create() -> percpu_ref_exit()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
PARAM_VALUE 0 ref->data 4096-ptr_max
PARAM_VALUE 0 ref->percpu_count_ptr 4096-18446744073709547523
MEM_ZERO 0 ref
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL

mm/backing-dev.c cgwb_free_rcu() -> percpu_ref_exit()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 bh
HALF_LOCKED2 rcu

fs/aio.c free_ioctx() -> percpu_ref_exit()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
NOCHECK_CALL
HALF_LOCKED2 &pool->lock

fs/aio.c free_ioctx() -> percpu_ref_exit()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
NOCHECK_CALL
HALF_LOCKED2 &pool->lock

fs/aio.c ioctx_alloc() -> percpu_ref_exit()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
NOCHECK_CALL

fs/aio.c ioctx_alloc() -> percpu_ref_exit()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
PARAM_VALUE 0 ref->percpu_count_ptr 0,4096-18446744073709547523
NOCHECK_CALL

mm/zswap.c __zswap_pool_release() -> percpu_ref_exit()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
NOCHECK_CALL
HALF_LOCKED2 &pool->lock

fs/nfsd/nfssvc.c nfsd_create_serv() -> percpu_ref_exit()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
PARAM_VALUE 0 ref->data 4096-ptr_max
PARAM_VALUE 0 ref->percpu_count_ptr 4096-18446744073709547523
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 global &nfsd_mutex

fs/nfsd/nfssvc.c nfsd_create_serv() -> percpu_ref_exit()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
PARAM_VALUE 0 ref->data 4096-ptr_max
PARAM_VALUE 0 ref->percpu_count_ptr 4096-18446744073709547523
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 global &nfsd_mutex

fs/nfsd/nfssvc.c nfsd_shutdown_net() -> percpu_ref_exit()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 global &nfsd_mutex

drivers/infiniband/sw/rdmavt/mr.c rvt_deinit_mregion() -> percpu_ref_exit()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL

drivers/dma/idxd/device.c idxd_drv_disable_wq() -> percpu_ref_exit()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &wq->wq_lock
HALF_LOCKED2 &dev->mutex
HALF_LOCKED2 global &iaa_devices_lock
TYPE_LOCK (struct idxd_wq)->wq_lock

drivers/nvme/target/core.c nvmet_ns_disable() -> percpu_ref_exit()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
PARAM_VALUE 0 ref->data 0,4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &buffer->mutex
HALF_LOCKED2 &frag->frag_sem
HALF_LOCKED2 global &nvmet_config_sem

drivers/nvme/target/core.c nvmet_sq_destroy() -> percpu_ref_exit()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
PARAM_VALUE 0 ref->data 0,4096-ptr_max
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL

drivers/nvdimm/../../tools/testing/nvdimm/test/iomap.c nfit_test_kill() -> percpu_ref_exit()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
PARAM_VALUE 0 ref->data 0,4096-ptr_max
NOCHECK_CALL

io_uring/io_uring.c io_ring_ctx_alloc() -> percpu_ref_exit()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
PARAM_VALUE 0 ref->data 4096-ptr_max
PARAM_VALUE 0 ref->percpu_count_ptr 4096-18446744073709547523
NOCHECK_CALL

io_uring/io_uring.c io_ring_ctx_free() -> percpu_ref_exit()

Type Parameter Key Value
PARAM_VALUE 0 ref->data 0,4096-ptr_max
NOCHECK_CALL
HALF_LOCKED2 &pool->lock

drivers/nvme/target/pr.c nvmet_ctrl_destroy_pr() -> percpu_ref_exit()

Type Parameter Key Value
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &subsys->lock
HALF_LOCKED2 &epf->lock
TYPE_LOCK (struct nvmet_subsys)->lock

drivers/nvme/target/pr.c nvmet_ctrl_init_pr() -> percpu_ref_exit()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &subsys->lock
HALF_LOCKED2 &epf->lock
TYPE_LOCK (struct nvmet_subsys)->lock

drivers/nvme/target/pr.c nvmet_pr_alloc_and_insert_pc_ref() -> percpu_ref_exit()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
PARAM_VALUE 0 ref->data 4096-ptr_max
PARAM_VALUE 0 ref->percpu_count_ptr 4096-18446744073709547523
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &subsys->lock
HALF_LOCKED2 &buffer->mutex
HALF_LOCKED2 &frag->frag_sem
HALF_LOCKED2 global &nvmet_config_sem
TYPE_LOCK (struct nvmet_subsys)->lock

drivers/nvme/target/pr.c nvmet_pr_exit_ns() -> percpu_ref_exit()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &buffer->mutex
HALF_LOCKED2 &frag->frag_sem
HALF_LOCKED2 &subsys->lock
HALF_LOCKED2 global &nvmet_config_sem

drivers/nvme/target/pr.c nvmet_pr_init_ns() -> percpu_ref_exit()

Type Parameter Key Value
PARAM_VALUE 0 ref 0-1025,1027-1029,1031-u64max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &buffer->mutex
LOCK2 &frag->frag_sem
LOCK2 &subsys->lock
LOCK2 global &nvmet_config_sem
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct configfs_buffer)->mutex
TYPE_LOCK (struct configfs_fragment)->frag_sem
TYPE_LOCK (struct nvmet_subsys)->lock

block/blk-core.c blk_free_queue_rcu() -> percpu_ref_exit()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 bh
HALF_LOCKED2 rcu

kernel/bpf/cgroup.c cgroup_bpf_inherit() -> percpu_ref_exit()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
NOCHECK_CALL

kernel/bpf/cgroup.c cgroup_bpf_release() -> percpu_ref_exit()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
NOCHECK_CALL
HALF_LOCKED2 &pool->lock

kernel/cgroup/cgroup.c cgroup_create() -> percpu_ref_exit()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 global &cgroup_mutex
HALF_LOCKED2 &dentry->d_lockref.lock

kernel/cgroup/cgroup.c cgroup_setup_root() -> percpu_ref_exit()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 global &cgroup_mutex

kernel/cgroup/cgroup.c css_free_rwork_fn() -> percpu_ref_exit()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
NOCHECK_CALL
HALF_LOCKED2 &pool->lock

drivers/target/target_core_tpg.c core_tpg_remove_lun() -> percpu_ref_exit()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
PARAM_VALUE 0 ref->data 0,4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL

drivers/infiniband/ulp/rtrs/rtrs-srv.c rtrs_srv_inflight_ref_release() -> percpu_ref_exit()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 rcu_read
HALF_LOCKED2 &ctx->map_changing_lock
HALF_LOCKED2 &packet->qp->r_lock
HALF_LOCKED2 &pool->lock
HALF_LOCKED2 &q->queue_lock
HALF_LOCKED2 &qp->s_lock
HALF_LOCKED2 &tg_pt_gp->tg_pt_gp_lock
HALF_LOCKED2 &tg_pt_gp->tg_pt_gp_transition_mutex
HALF_LOCKED2 flags
HALF_LOCKED2 global &mf_mutex
HALF_LOCKED2 global &pcpu_lock
HALF_LOCKED2 irq

block/blk-cgroup.c blkg_alloc() -> percpu_ref_exit()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
PARAM_VALUE 0 ref->data 4096-ptr_max
PARAM_VALUE 0 ref->percpu_count_ptr 4096-18446744073709547523
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &bdev->bd_queue->rq_qos_mutex
HALF_LOCKED2 &of->mutex
HALF_LOCKED2 &q->blkcg_mutex
HALF_LOCKED2 &q->queue_lock
HALF_LOCKED2 irq

block/blk-cgroup.c blkg_free_workfn() -> percpu_ref_exit()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
NOCHECK_CALL
HALF_LOCKED2 &pool->lock

drivers/target/target_core_transport.c target_free_cmd_counter() -> percpu_ref_exit()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL

net/smc/smc_wr.c smc_wr_create_link() -> percpu_ref_exit()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
PARAM_VALUE 0 ref->data 4096-ptr_max
PARAM_VALUE 0 ref->percpu_count_ptr 4096-18446744073709547523
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &pool->lock

net/smc/smc_wr.c smc_wr_free_link() -> percpu_ref_exit()

Type Parameter Key Value
PARAM_VALUE 0 ref->data 0,4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &lgr->llc_conf_mutex
HALF_LOCKED2 &pool->lock

net/smc/smc_wr.c smc_wr_free_link() -> percpu_ref_exit()

Type Parameter Key Value
PARAM_VALUE 0 ref->data 0,4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &lgr->llc_conf_mutex
HALF_LOCKED2 &pool->lock

mm/memremap.c memunmap_pages() -> percpu_ref_exit()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
PARAM_VALUE 0 ref->data 0,4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &drm->dmem->mutex
HALF_LOCKED2 &mdevice->devmem_lock

drivers/target/target_core_device.c target_free_device() -> percpu_ref_exit()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &hba->hba_access_mutex
HALF_LOCKED2 &subsys->su_mutex

kernel/bpf/trampoline.c bpf_tramp_image_free() -> percpu_ref_exit()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL