Defined in 1 files as a function:

Referenced in 1 files:

Smatch caller information:

lib/percpu-refcount.c percpu_ref_kill_and_confirm() -> __percpu_ref_switch_mode()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
PARAM_VALUE 0 ref->percpu_count_ptr 0,2-u64max
DATA_SOURCE 0 ref $0
DATA_SOURCE 1 confirm_switch $1
BIT_INFO 0 ref->percpu_count_ptr 0x2,0xffffffffffffffff
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
NO_OVERFLOW_SIMPLE 0 ref->percpu_count_ptr
LOCK2 flags
LOCK2 global &percpu_ref_switch_lock
HALF_LOCKED2 &ctx->uring_lock
HALF_LOCKED2 &mddev->suspend_mutex
HALF_LOCKED2 &pr->pr_sem
HALF_LOCKED2 &priv->lock
HALF_LOCKED2 &q->mq_freeze_lock
HALF_LOCKED2 &q->queue_lock
HALF_LOCKED2 &wq->wq_lock
HALF_LOCKED2 global &cgwb_lock
HALF_LOCKED2 global &nfsd_mutex
HALF_LOCKED2 irq

lib/percpu-refcount.c percpu_ref_resurrect() -> __percpu_ref_switch_mode()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
PARAM_VALUE 0 ref->percpu_count_ptr 1-u64max
PARAM_VALUE 1 confirm_switch 0
DATA_SOURCE 0 ref $0
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 flags
LOCK2 global &percpu_ref_switch_lock
HALF_LOCKED2 &dev->delayed_cmd_lock
HALF_LOCKED2 &inode->i_rwsem
HALF_LOCKED2 &mddev->suspend_mutex
HALF_LOCKED2 &q->mq_freeze_lock
HALF_LOCKED2 &wq->wq_lock
HALF_LOCKED2 flags
HALF_LOCKED2 global &swapon_mutex

lib/percpu-refcount.c percpu_ref_switch_to_atomic() -> __percpu_ref_switch_mode()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
PARAM_VALUE 0 ref->data 4096-ptr_max
PARAM_VALUE 0 ref->data->force_atomic 1
PARAM_VALUE 1 confirm_switch 0
DATA_SOURCE 0 ref $0
DATA_SOURCE 1 confirm_switch $1
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 flags
LOCK2 global &percpu_ref_switch_lock

lib/percpu-refcount.c percpu_ref_switch_to_percpu() -> __percpu_ref_switch_mode()

Type Parameter Key Value
PARAM_VALUE 0 ref 4096-ptr_max
PARAM_VALUE 0 ref->data 4096-ptr_max
PARAM_VALUE 0 ref->data->force_atomic 0
PARAM_VALUE 1 confirm_switch 0
DATA_SOURCE 0 ref $0
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 flags
LOCK2 global &percpu_ref_switch_lock
HALF_LOCKED2 &mddev->lock
HALF_LOCKED2 &of->mutex