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_soft_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 _drbd_set_state() -> is_valid_soft_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_soft_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_soft_transition()

Type Parameter Key Value
PARAM_VALUE 2 connection 4096-ptr_max
BUF_SIZE 2 connection (-1),128
BUF_SIZE 2 connection (-1),128
CAPPED_DATA 2 connection->peer_devices.idr_base 1
DATA_SOURCE 0 os r drbd_read_state
DATA_SOURCE 1 ns r sanitize_state
DATA_SOURCE 2 connection $0
STR_LEN 0 os (-1)-0
STR_LEN 2 connection (-1)-0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NO_OVERFLOW_SIMPLE 2 connection->ack_sender->rescuer
NO_OVERFLOW_SIMPLE 2 connection->ack_sender->rescuer->task->dl.dl_runtime
NO_OVERFLOW_SIMPLE 2 connection->ack_sender->rescuer->task->dl.pi_se->dl_runtime
NO_OVERFLOW_SIMPLE 2 connection->data.socket->sk->sk_backlog.len
NO_OVERFLOW_SIMPLE 2 connection->data.socket->sk->sk_receive_queue.prev->end
NO_OVERFLOW_SIMPLE 2 connection->data.socket->sk->sk_receive_queue.prev->len
NO_OVERFLOW_SIMPLE 2 connection->data.socket->sk->sk_receive_queue.prev->next->end
NO_OVERFLOW_SIMPLE 2 connection->data.socket->sk->sk_receive_queue.prev->next->len
NO_OVERFLOW_SIMPLE 2 connection->data.socket->sk->sk_receive_queue.prev->next->tail
NO_OVERFLOW_SIMPLE 2 connection->data.socket->sk->sk_receive_queue.prev->next->truesize
NO_OVERFLOW_SIMPLE 2 connection->data.socket->sk->sk_receive_queue.prev->tail
NO_OVERFLOW_SIMPLE 2 connection->data.socket->sk->sk_receive_queue.prev->truesize
NO_OVERFLOW_SIMPLE 2 connection->data.socket->sk->sk_write_queue.next->end
NO_OVERFLOW_SIMPLE 2 connection->data.socket->sk->sk_write_queue.next->len
NO_OVERFLOW_SIMPLE 2 connection->data.socket->sk->sk_write_queue.next->prev->end
NO_OVERFLOW_SIMPLE 2 connection->data.socket->sk->sk_write_queue.next->prev->len
NO_OVERFLOW_SIMPLE 2 connection->data.socket->sk->sk_write_queue.next->prev->tail
NO_OVERFLOW_SIMPLE 2 connection->data.socket->sk->sk_write_queue.next->prev->truesize
NO_OVERFLOW_SIMPLE 2 connection->data.socket->sk->sk_write_queue.next->tail
NO_OVERFLOW_SIMPLE 2 connection->data.socket->sk->sk_write_queue.next->truesize
NO_OVERFLOW_SIMPLE 2 connection->meta.socket->sk->sk_receive_queue.prev->end
NO_OVERFLOW_SIMPLE 2 connection->meta.socket->sk->sk_receive_queue.prev->len
NO_OVERFLOW_SIMPLE 2 connection->meta.socket->sk->sk_receive_queue.prev->next->end
NO_OVERFLOW_SIMPLE 2 connection->meta.socket->sk->sk_receive_queue.prev->next->len
NO_OVERFLOW_SIMPLE 2 connection->meta.socket->sk->sk_write_queue.next->end
NO_OVERFLOW_SIMPLE 2 connection->meta.socket->sk->sk_write_queue.next->prev->end
LOCK2 irq
LOCK2 rcu_read
HALF_LOCKED2 &device->resource->req_lock
HALF_LOCKED2 2 &connection->cstate_mutex
HALF_LOCKED2 2 &connection->data.mutex
HALF_LOCKED2 2 &connection->resource->conf_update
HALF_LOCKED2 2 &connection->resource->req_lock
TYPE_LOCK (struct drbd_resource)->req_lock

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

Type Parameter Key Value
PARAM_VALUE 2 connection 4096-ptr_max
BUF_SIZE 2 connection (-1),128
BUF_SIZE 2 connection (-1),128
CAPPED_DATA 2 connection->peer_devices.idr_base 1
DATA_SOURCE 0 os r drbd_read_state
DATA_SOURCE 1 ns r sanitize_state
DATA_SOURCE 2 connection $0
STR_LEN 0 os (-1)-0
STR_LEN 2 connection (-1)-0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NO_OVERFLOW_SIMPLE 2 connection->ack_sender->rescuer
NO_OVERFLOW_SIMPLE 2 connection->ack_sender->rescuer->task->dl.dl_runtime
NO_OVERFLOW_SIMPLE 2 connection->ack_sender->rescuer->task->dl.pi_se->dl_runtime
NO_OVERFLOW_SIMPLE 2 connection->data.socket->sk->sk_backlog.len
NO_OVERFLOW_SIMPLE 2 connection->data.socket->sk->sk_receive_queue.prev->end
NO_OVERFLOW_SIMPLE 2 connection->data.socket->sk->sk_receive_queue.prev->len
NO_OVERFLOW_SIMPLE 2 connection->data.socket->sk->sk_receive_queue.prev->next->end
NO_OVERFLOW_SIMPLE 2 connection->data.socket->sk->sk_receive_queue.prev->next->len
NO_OVERFLOW_SIMPLE 2 connection->data.socket->sk->sk_receive_queue.prev->next->tail
NO_OVERFLOW_SIMPLE 2 connection->data.socket->sk->sk_receive_queue.prev->next->truesize
NO_OVERFLOW_SIMPLE 2 connection->data.socket->sk->sk_receive_queue.prev->tail
NO_OVERFLOW_SIMPLE 2 connection->data.socket->sk->sk_receive_queue.prev->truesize
NO_OVERFLOW_SIMPLE 2 connection->data.socket->sk->sk_write_queue.next->end
NO_OVERFLOW_SIMPLE 2 connection->data.socket->sk->sk_write_queue.next->len
NO_OVERFLOW_SIMPLE 2 connection->data.socket->sk->sk_write_queue.next->prev->end
NO_OVERFLOW_SIMPLE 2 connection->data.socket->sk->sk_write_queue.next->prev->len
NO_OVERFLOW_SIMPLE 2 connection->data.socket->sk->sk_write_queue.next->prev->tail
NO_OVERFLOW_SIMPLE 2 connection->data.socket->sk->sk_write_queue.next->prev->truesize
NO_OVERFLOW_SIMPLE 2 connection->data.socket->sk->sk_write_queue.next->tail
NO_OVERFLOW_SIMPLE 2 connection->data.socket->sk->sk_write_queue.next->truesize
NO_OVERFLOW_SIMPLE 2 connection->meta.socket->sk->sk_receive_queue.prev->end
NO_OVERFLOW_SIMPLE 2 connection->meta.socket->sk->sk_receive_queue.prev->len
NO_OVERFLOW_SIMPLE 2 connection->meta.socket->sk->sk_receive_queue.prev->next->end
NO_OVERFLOW_SIMPLE 2 connection->meta.socket->sk->sk_receive_queue.prev->next->len
NO_OVERFLOW_SIMPLE 2 connection->meta.socket->sk->sk_write_queue.next->end
NO_OVERFLOW_SIMPLE 2 connection->meta.socket->sk->sk_write_queue.next->prev->end
LOCK2 irq
LOCK2 rcu_read
HALF_LOCKED2 &device->resource->req_lock
HALF_LOCKED2 2 &connection->cstate_mutex
HALF_LOCKED2 2 &connection->data.mutex
HALF_LOCKED2 2 &connection->resource->conf_update
HALF_LOCKED2 2 &connection->resource->req_lock
TYPE_LOCK (struct drbd_resource)->req_lock

drivers/block/drbd/drbd_state.c drbd_req_state() -> is_valid_soft_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