Documented in 1 files:

Defined in 1 files as a prototype:

Defined in 1 files as a function:

Referenced in 9 files:

Smatch caller information:

mm/memcontrol.c __swap_cluster_lock() -> percpu_ref_is_zero()

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

mm/memcontrol.c __swap_offset_to_cluster() -> percpu_ref_is_zero()

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

mm/memcontrol.c __swap_type_to_info() -> percpu_ref_is_zero()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING

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

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

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

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

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

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

mm/huge_memory.c __swap_cluster_lock() -> percpu_ref_is_zero()

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

mm/huge_memory.c __swap_offset_to_cluster() -> percpu_ref_is_zero()

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

mm/huge_memory.c __swap_type_to_info() -> percpu_ref_is_zero()

Type Parameter Key Value
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
LOCK2 irq

drivers/md/md.c md_flush_request() -> percpu_ref_is_zero()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
PARAM_VALUE 0 ref->percpu_count_ptr 1-u64max
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &bio->bi_bdev->bd_queue->queue_lock
HALF_LOCKED2 &md->io_barrier

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

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
LOCK2 &mddev->suspend_mutex
HALF_LOCKED2 &of->mutex
TYPE_LOCK (struct mddev)->suspend_mutex

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

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
LOCK2 &mddev->suspend_mutex
HALF_LOCKED2 &of->mutex
TYPE_LOCK (struct mddev)->suspend_mutex

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

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
LOCK2 &mddev->suspend_mutex
HALF_LOCKED2 &of->mutex
TYPE_LOCK (struct mddev)->suspend_mutex

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

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
PARAM_VALUE 0 ref->data 0,4096-ptr_max
RX_PATH
LOCK2 &mddev->suspend_mutex
TYPE_LOCK (struct mddev)->suspend_mutex

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

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
LOCK2 &mddev->suspend_mutex
TYPE_LOCK (struct mddev)->suspend_mutex

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

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
LOCK2 &mddev->suspend_mutex
TYPE_LOCK (struct mddev)->suspend_mutex

drivers/md/md.c set_in_sync() -> percpu_ref_is_zero()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
PARAM_VALUE 0 ref->data 4096-ptr_max
CAPABLE 0 21
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
LOCK2 &mddev->lock
LOCK2 &of->mutex
HALF_LOCKED2 &mddev->reconfig_mutex
HALF_LOCKED2 &of->prealloc_mutex
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct kernfs_open_file)->mutex
TYPE_LOCK (struct mddev)->lock

mm/page_io.c __swap_cluster_lock() -> percpu_ref_is_zero()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max

mm/page_io.c __swap_offset_to_cluster() -> percpu_ref_is_zero()

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

mm/page_io.c __swap_type_to_info() -> percpu_ref_is_zero()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING

mm/swapfile.c __swap_cluster_lock() -> percpu_ref_is_zero()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 &oldmm->mmap_lock
HALF_LOCKED2 &si->global_cluster_lock
HALF_LOCKED2 dst_ptl
HALF_LOCKED2 global &device_hotplug_lock
HALF_LOCKED2 global &system_transition_mutex
HALF_LOCKED2 ptl
HALF_LOCKED2 rcu_read
HALF_LOCKED2 src_ptl

mm/swapfile.c __swap_offset_to_cluster() -> percpu_ref_is_zero()

Type Parameter Key Value
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 &oldmm->mmap_lock

mm/swapfile.c __swap_type_to_info() -> percpu_ref_is_zero()

Type Parameter Key Value
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 global &system_transition_mutex

lib/percpu-refcount.c percpu_ref_reinit() -> percpu_ref_is_zero()

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

block/blk-mq.c blk_mq_freeze_queue_wait() -> percpu_ref_is_zero()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &ctrl->scan_lock
HALF_LOCKED2 &ctrl->srcu
HALF_LOCKED2 &subsys->lock

block/blk-mq.c blk_mq_freeze_queue_wait() -> percpu_ref_is_zero()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &ctrl->scan_lock
HALF_LOCKED2 &ctrl->srcu
HALF_LOCKED2 &subsys->lock

block/blk-mq.c blk_mq_freeze_queue_wait() -> percpu_ref_is_zero()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &ctrl->scan_lock
HALF_LOCKED2 &ctrl->srcu
HALF_LOCKED2 &subsys->lock

block/blk-mq.c blk_mq_freeze_queue_wait_timeout() -> percpu_ref_is_zero()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
LOCK2 &ctrl->srcu
HALF_LOCKED2 &dev->shutdown_lock
TYPE_LOCK (struct nvme_ctrl)->srcu

block/blk-mq.c blk_mq_freeze_queue_wait_timeout() -> percpu_ref_is_zero()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
LOCK2 &ctrl->srcu
HALF_LOCKED2 &dev->shutdown_lock
TYPE_LOCK (struct nvme_ctrl)->srcu

block/blk-mq.c blk_mq_freeze_queue_wait_timeout() -> percpu_ref_is_zero()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
LOCK2 &ctrl->srcu
HALF_LOCKED2 &dev->shutdown_lock
TYPE_LOCK (struct nvme_ctrl)->srcu

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

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

mm/shmem.c __swap_cluster_lock() -> percpu_ref_is_zero()

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

mm/shmem.c __swap_offset_to_cluster() -> percpu_ref_is_zero()

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

mm/shmem.c __swap_type_to_info() -> percpu_ref_is_zero()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING

mm/vmscan.c __swap_cluster_lock() -> percpu_ref_is_zero()

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

mm/vmscan.c __swap_offset_to_cluster() -> percpu_ref_is_zero()

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

mm/vmscan.c __swap_type_to_info() -> percpu_ref_is_zero()

Type Parameter Key Value
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING

kernel/bpf/cgroup.c purge_effective_progs() -> percpu_ref_is_zero()

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

kernel/bpf/cgroup.c replace_effective_prog() -> percpu_ref_is_zero()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
LOCK2 global &cgroup_mutex

kernel/bpf/cgroup.c update_effective_progs() -> percpu_ref_is_zero()

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

kernel/bpf/cgroup.c update_effective_progs() -> percpu_ref_is_zero()

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

drivers/target/target_core_transport.c target_do_delayed_work() -> percpu_ref_is_zero()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
PREEMPT_ADD <- disables preempt
LOCK2 &dev->delayed_cmd_lock
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct se_device)->delayed_cmd_lock

drivers/target/target_core_transport.c target_wait_for_cmds() -> percpu_ref_is_zero()

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

drivers/target/target_core_transport.c target_wait_for_cmds() -> percpu_ref_is_zero()

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

drivers/target/target_core_transport.c target_wait_for_cmds() -> percpu_ref_is_zero()

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

mm/migrate.c __swap_cluster_lock() -> percpu_ref_is_zero()

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

mm/migrate.c __swap_offset_to_cluster() -> percpu_ref_is_zero()

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

mm/migrate.c __swap_type_to_info() -> percpu_ref_is_zero()

Type Parameter Key Value
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING

block/blk-pm.c blk_pre_runtime_suspend() -> percpu_ref_is_zero()

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

mm/swap_state.c __swap_cluster_lock() -> percpu_ref_is_zero()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 global &mf_mutex
HALF_LOCKED2 vmf->ptl

mm/swap_state.c __swap_offset_to_cluster() -> percpu_ref_is_zero()

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

mm/swap_state.c __swap_type_to_info() -> percpu_ref_is_zero()

Type Parameter Key Value
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING

mm/memcontrol-v1.c __swap_cluster_lock() -> percpu_ref_is_zero()

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

mm/memcontrol-v1.c __swap_offset_to_cluster() -> percpu_ref_is_zero()

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

mm/memcontrol-v1.c __swap_type_to_info() -> percpu_ref_is_zero()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING