Documented in 1 files:

Defined in 1 files as a function:

Referenced in 23 files:

Smatch caller information:

mm/memcontrol.c mem_cgroup_css_online() -> percpu_ref_kill()

Type Parameter Key Value
PARAM_VALUE 0 ref 1-u64max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 global &cgroup_mutex

mm/memcontrol.c memcg_reparent_objcgs() -> percpu_ref_kill()

Type Parameter Key Value
NOCHECK_CALL
LOCK2 global &cgroup_mutex
HALF_LOCKED2 &pool->lock

drivers/md/md-llbitmap.c llbitmap_suspend_timeout() -> percpu_ref_kill()

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

net/core/devmem.c net_devmem_unbind_dmabuf() -> percpu_ref_kill()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &priv->lock
HALF_LOCKED2 &dev->lock
HALF_LOCKED2 global &cb_lock
TYPE_LOCK (struct netdev_nl_sock)->lock

drivers/md/md.c mddev_suspend() -> percpu_ref_kill()

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

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

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
CAPABLE 0 21
NOCHECK_CALL

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

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
CAPABLE 0 21
NOCHECK_CALL

drivers/dma/idxd/irq.c idxd_int_handle_revoke() -> percpu_ref_kill()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
NOCHECK_CALL
LOCK2 &wq->wq_lock
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct idxd_wq)->wq_lock

block/blk-mq.c __blk_freeze_queue_start() -> percpu_ref_kill()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &q->mq_freeze_lock
HALF_LOCKED2 &ctrl->srcu
TYPE_LOCK (struct request_queue)->mq_freeze_lock

mm/backing-dev.c cgwb_kill() -> percpu_ref_kill()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 global &cgwb_lock
HALF_LOCKED2 &pool->lock
HALF_LOCKED2 flags
HALF_LOCKED2 global &cgroup_mutex
HALF_LOCKED2 irq

fs/aio.c free_ioctx_users() -> percpu_ref_kill()

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

fs/aio.c kill_ioctx() -> percpu_ref_kill()

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

mm/zswap.c zswap_compressor_param_set() -> percpu_ref_kill()

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 &of->mutex

drivers/infiniband/sw/rdmavt/mr.c rvt_free_lkey() -> percpu_ref_kill()

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

drivers/dma/idxd/device.c __idxd_wq_quiesce() -> percpu_ref_kill()

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
TYPE_LOCK (struct idxd_wq)->wq_lock

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

Type Parameter Key Value
PARAM_VALUE 0 ref 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/nvdimm/../../tools/testing/nvdimm/test/iomap.c nfit_test_kill() -> percpu_ref_kill()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
NOCHECK_CALL

io_uring/io_uring.c io_ring_ctx_wait_and_kill() -> percpu_ref_kill()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &ctx->uring_lock
TYPE_LOCK (struct io_ring_ctx)->uring_lock

kernel/bpf/cgroup.c cgroup_bpf_offline() -> percpu_ref_kill()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
NOCHECK_CALL

kernel/cgroup/cgroup.c cgroup_destroy_locked() -> percpu_ref_kill()

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_kill_sb() -> percpu_ref_kill()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &s->s_umount
HALF_LOCKED2 &sb->s_umount
HALF_LOCKED2 global &cifs_mount_mutex

drivers/infiniband/ulp/rtrs/rtrs-srv.c rtrs_srv_close_work() -> percpu_ref_kill()

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

block/blk-cgroup.c blkg_create() -> percpu_ref_kill()

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 &q->queue_lock
LOCK2 irq
HALF_LOCKED2 &bdev->bd_queue->rq_qos_mutex
HALF_LOCKED2 &of->mutex
HALF_LOCKED2 &q->blkcg_mutex
TYPE_LOCK (struct request_queue)->queue_lock

block/blk-cgroup.c blkg_destroy() -> percpu_ref_kill()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &blkcg->lock
LOCK2 &q->queue_lock
LOCK2 irq
HALF_LOCKED2 &pool->lock
HALF_LOCKED2 &q->blkcg_mutex
TYPE_LOCK (struct blkcg)->lock
TYPE_LOCK (struct request_queue)->queue_lock

drivers/target/target_core_transport.c target_handle_task_attr() -> percpu_ref_kill()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
PARAM_VALUE 0 ref->percpu_count_ptr 1-u64max
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &dev->delayed_cmd_lock
LOCK2 flags
HALF_LOCKED2 &pool->lock
HALF_LOCKED2 &sess->cmdsn_mutex
TYPE_LOCK (struct se_device)->delayed_cmd_lock

drivers/target/target_core_transport.c transport_clear_lun_ref() -> percpu_ref_kill()

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

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

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

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &lgr->llc_conf_mutex
HALF_LOCKED2 &pool->lock

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

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

kernel/bpf/trampoline.c __bpf_tramp_image_put_rcu_tasks() -> percpu_ref_kill()

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