Documented in 1 files:

Defined in 1 files as a prototype:

Defined in 1 files as a function:

Referenced in 1 files:

Smatch caller information:

drivers/block/drbd/drbd_state.c _drbd_set_state() -> is_valid_transition()

Type Parameter Key Value
DATA_SOURCE 0 os r drbd_read_state
DATA_SOURCE 1 ns $1 [m]
PARAM_COMPARE 1 ns == $1
BIT_INFO 1 ns 0x0,0x7fffffff
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &adm_ctx->resource->adm_mutex
HALF_LOCKED2 &device->resource->req_lock
HALF_LOCKED2 &device->resource->req_lock
HALF_LOCKED2 &resource->req_lock
HALF_LOCKED2 device->state_mutex
HALF_LOCKED2 flags
HALF_LOCKED2 global &resources_mutex
HALF_LOCKED2 irq
HALF_LOCKED2 rcu_read

drivers/block/drbd/drbd_state.c _req_st_cond() -> is_valid_transition()

Type Parameter Key Value
DATA_SOURCE 0 os r drbd_read_state
DATA_SOURCE 1 ns r sanitize_state
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
LOCK2 &device->resource->req_lock
LOCK2 flags
HALF_LOCKED2 &adm_ctx->resource->adm_mutex
HALF_LOCKED2 device->state_mutex
TYPE_LOCK (struct drbd_resource)->req_lock

drivers/block/drbd/drbd_state.c conn_is_valid_transition() -> is_valid_transition()

Type Parameter Key Value
DATA_SOURCE 0 os r drbd_read_state
DATA_SOURCE 1 ns r sanitize_state
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
LOCK2 irq
LOCK2 rcu_read
HALF_LOCKED2 &connection->cstate_mutex
HALF_LOCKED2 &connection->data.mutex
HALF_LOCKED2 &connection->resource->conf_update
HALF_LOCKED2 &connection->resource->req_lock
HALF_LOCKED2 &device->resource->req_lock
TYPE_LOCK (struct drbd_resource)->req_lock

drivers/block/drbd/drbd_state.c drbd_req_state() -> is_valid_transition()

Type Parameter Key Value
DATA_SOURCE 0 os r drbd_read_state
DATA_SOURCE 1 ns r sanitize_state
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
LOCK2 &device->resource->req_lock
LOCK2 flags
HALF_LOCKED2 &adm_ctx->resource->adm_mutex
HALF_LOCKED2 device->state_mutex
TYPE_LOCK (struct drbd_resource)->req_lock