Defined in 1 files as a function:

Referenced in 1 files:

Smatch caller information:

drivers/target/target_core_user.c run_qfull_queue() -> tcmu_free_cmd()

Type Parameter Key Value
PARAM_VALUE 0 tcmu_cmd 4096-ptr_max
PARAM_VALUE 0 tcmu_cmd->se_cmd 4096-ptr_max
PARAM_VALUE 0 tcmu_cmd->se_cmd->se_dev->caw_sem.first_waiter->up 0-1
PARAM_VALUE 0 tcmu_cmd->se_cmd->se_dev->caw_sem.lock.dep_map->name 0-255
PARAM_VALUE 0 tcmu_cmd->se_cmd->se_dev->caw_sem.lock.owner (-1)
PARAM_VALUE 0 tcmu_cmd->se_cmd->se_dev->caw_sem.lock.owner_cpu u32max
PARAM_VALUE 0 tcmu_cmd->se_cmd->t_state_lock.rlock.dep_map->name 0-255
PARAM_VALUE 0 tcmu_cmd->se_cmd->t_transport_stop_comp.wait.lock.dep_map->name 0-255
PARAM_VALUE 0 tcmu_cmd->se_cmd->t_transport_stop_comp.wait.lock.owner (-1)
PARAM_VALUE 0 tcmu_cmd->se_cmd->t_transport_stop_comp.wait.lock.owner_cpu u32max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &buffer->mutex
LOCK2 &frag->frag_sem
LOCK2 &udev->cmdr_lock
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct configfs_buffer)->mutex
TYPE_LOCK (struct configfs_fragment)->frag_sem
TYPE_LOCK (struct tcmu_dev)->cmdr_lock

drivers/target/target_core_user.c run_qfull_queue() -> tcmu_free_cmd()

Type Parameter Key Value
PARAM_VALUE 0 tcmu_cmd 4096-ptr_max
PARAM_VALUE 0 tcmu_cmd->se_cmd 4096-ptr_max
PARAM_VALUE 0 tcmu_cmd->se_cmd->se_dev->caw_sem.first_waiter->up 0-1
PARAM_VALUE 0 tcmu_cmd->se_cmd->se_dev->caw_sem.lock.dep_map->name 0-255
PARAM_VALUE 0 tcmu_cmd->se_cmd->se_dev->caw_sem.lock.owner (-1)
PARAM_VALUE 0 tcmu_cmd->se_cmd->se_dev->caw_sem.lock.owner_cpu u32max
PARAM_VALUE 0 tcmu_cmd->se_cmd->t_state_lock.rlock.dep_map->name 0-255
PARAM_VALUE 0 tcmu_cmd->se_cmd->t_transport_stop_comp.wait.lock.dep_map->name 0-255
PARAM_VALUE 0 tcmu_cmd->se_cmd->t_transport_stop_comp.wait.lock.owner (-1)
PARAM_VALUE 0 tcmu_cmd->se_cmd->t_transport_stop_comp.wait.lock.owner_cpu u32max
PARAM_VALUE 0 tcmu_cmd->tcmu_dev 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &udev->cmdr_lock
HALF_LOCKED2 &buffer->mutex
HALF_LOCKED2 &frag->frag_sem
HALF_LOCKED2 &idev->info_lock
HALF_LOCKED2 global &root_udev_mutex
TYPE_LOCK (struct tcmu_dev)->cmdr_lock

drivers/target/target_core_user.c tcmu_check_expired_queue_cmd() -> tcmu_free_cmd()

Type Parameter Key Value
PARAM_VALUE 0 tcmu_cmd 4096-ptr_max
PARAM_VALUE 0 tcmu_cmd->queue_entry.next->prev 4096-ptr_max
PARAM_VALUE 0 tcmu_cmd->queue_entry.prev->next 4096-ptr_max
PARAM_VALUE 0 tcmu_cmd->se_cmd->se_dev->caw_sem.first_waiter->up 0-1
DATA_SOURCE 0 tcmu_cmd $0
NOCHECK_CALL
LOCK2 &udev->cmdr_lock
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct tcmu_dev)->cmdr_lock

drivers/target/target_core_user.c tcmu_free_kept_buf_store() -> tcmu_free_cmd()

Type Parameter Key Value
PARAM_VALUE 0 tcmu_cmd 4096-ptr_max
CAPPED_DATA 0 tcmu_cmd->dbi_cnt 1
DATA_SOURCE 0 tcmu_cmd r xas_load
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &buffer->mutex
LOCK2 &frag->frag_sem
LOCK2 &udev->cmdr_lock
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct configfs_buffer)->mutex
TYPE_LOCK (struct configfs_fragment)->frag_sem
TYPE_LOCK (struct tcmu_dev)->cmdr_lock

drivers/target/target_core_user.c tcmu_handle_completion() -> tcmu_free_cmd()

Type Parameter Key Value
PARAM_VALUE 0 tcmu_cmd 4096-ptr_max
PARAM_VALUE 0 tcmu_cmd->queue_entry.next->prev 4096-ptr_max
PARAM_VALUE 0 tcmu_cmd->queue_entry.prev->next 4096-ptr_max
PARAM_VALUE 0 tcmu_cmd->se_cmd->free_compl->wait.lock.owner (-1)
PARAM_VALUE 0 tcmu_cmd->se_cmd->free_compl->wait.lock.owner_cpu u32max
PARAM_VALUE 0 tcmu_cmd->se_cmd->se_dev->caw_sem.first_waiter->up 0-1
PARAM_VALUE 0 tcmu_cmd->se_cmd->se_dev->caw_sem.lock.dep_map->name 0-255
PARAM_VALUE 0 tcmu_cmd->se_cmd->se_dev->caw_sem.lock.owner (-1)
PARAM_VALUE 0 tcmu_cmd->se_cmd->se_dev->caw_sem.lock.owner_cpu u32max
PARAM_VALUE 0 tcmu_cmd->se_cmd->se_dev->delayed_cmd_lock.rlock.dep_map->name 0-255
PARAM_VALUE 0 tcmu_cmd->se_cmd->se_dev->delayed_cmd_work.entry.next->prev 4096-ptr_max
PARAM_VALUE 0 tcmu_cmd->se_cmd->se_dev->non_ordered.data->rcu.entry.next s64max
PARAM_VALUE 0 tcmu_cmd->se_cmd->se_dev->non_ordered.data->rcu.flags 0-4294967295
PARAM_VALUE 0 tcmu_cmd->se_cmd->se_dev->non_ordered.data->rcu.func 1-u64max
PARAM_VALUE 0 tcmu_cmd->se_cmd->se_dev->non_ordered.data->rcu.function 1626621062881370112
PARAM_VALUE 0 tcmu_cmd->se_cmd->se_dev->non_ordered.data->rcu.is_hard 0-1
PARAM_VALUE 0 tcmu_cmd->se_cmd->se_dev->non_ordered.data->rcu.is_lazy 0-1
PARAM_VALUE 0 tcmu_cmd->se_cmd->se_dev->non_ordered.data->rcu.is_queued 0-1
PARAM_VALUE 0 tcmu_cmd->se_cmd->se_dev->non_ordered.data->rcu.is_soft 0-1
PARAM_VALUE 0 tcmu_cmd->se_cmd->se_dev->qf_cmd_list.prev->next 4096-ptr_max
PARAM_VALUE 0 tcmu_cmd->se_cmd->se_dev->qf_cmd_list.prev->next->next 4096-ptr_max
PARAM_VALUE 0 tcmu_cmd->se_cmd->se_dev->qf_cmd_lock.rlock.dep_map->name 0-255
PARAM_VALUE 0 tcmu_cmd->se_cmd->se_dev->qf_work_queue.entry.next->prev 4096-ptr_max
PARAM_VALUE 0 tcmu_cmd->se_cmd->se_qf_node.next->prev 4096-ptr_max
PARAM_VALUE 0 tcmu_cmd->se_cmd->se_tmr_req->tmr_dev->se_tmr_lock.rlock.dep_map->name 0-255
PARAM_VALUE 0 tcmu_cmd->se_cmd->se_tmr_req->tmr_list.next->next 4096-ptr_max
PARAM_VALUE 0 tcmu_cmd->se_cmd->se_tmr_req->tmr_list.next->prev 4096-ptr_max
PARAM_VALUE 0 tcmu_cmd->se_cmd->se_tmr_req->tmr_list.prev->next 4096-ptr_max
PARAM_VALUE 0 tcmu_cmd->se_cmd->se_tmr_req->tmr_list.prev->prev 4096-ptr_max
PARAM_VALUE 0 tcmu_cmd->se_cmd->t_state_lock.rlock.dep_map->name 0-255
PARAM_VALUE 0 tcmu_cmd->se_cmd->t_transport_stop_comp.wait.lock.dep_map->name 0-255
PARAM_VALUE 0 tcmu_cmd->se_cmd->t_transport_stop_comp.wait.lock.owner (-1)
PARAM_VALUE 0 tcmu_cmd->se_cmd->t_transport_stop_comp.wait.lock.owner_cpu u32max
PARAM_VALUE 0 tcmu_cmd->se_cmd->t_transport_stop_comp.wait.task_list.prev->next->next 4096-ptr_max
PARAM_VALUE 0 tcmu_cmd->se_cmd->work.entry.next 4096-ptr_max
CAPPED_DATA 0 tcmu_cmd->dbi_cnt 1
DATA_SOURCE 0 tcmu_cmd $0
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &udev->cmdr_lock
HALF_LOCKED2 &buffer->mutex
HALF_LOCKED2 &frag->frag_sem
HALF_LOCKED2 &idev->info_lock
HALF_LOCKED2 global &root_udev_mutex
TYPE_LOCK (struct tcmu_dev)->cmdr_lock

drivers/target/target_core_user.c tcmu_queue_cmd() -> tcmu_free_cmd()

Type Parameter Key Value
PARAM_VALUE 0 tcmu_cmd 4096-ptr_max
PARAM_VALUE 0 tcmu_cmd->dbi 16,4096-ptr_max
PARAM_VALUE 0 tcmu_cmd->queue_entry.next 4096-ptr_max
PARAM_VALUE 0 tcmu_cmd->queue_entry.next->next 4096-ptr_max
PARAM_VALUE 0 tcmu_cmd->queue_entry.prev 4096-ptr_max
PARAM_VALUE 0 tcmu_cmd->queue_entry.prev->next 4096-ptr_max
PARAM_VALUE 0 tcmu_cmd->queue_entry.prev->prev 4096-ptr_max
PARAM_VALUE 0 tcmu_cmd->se_cmd 4096-ptr_max
PARAM_VALUE 0 tcmu_cmd->se_cmd->execute_cmd 1-u64max
PARAM_VALUE 0 tcmu_cmd->se_cmd->se_dev 4096-ptr_max
PARAM_VALUE 0 tcmu_cmd->se_cmd->transport_state 0,2-u32max
PARAM_VALUE 0 tcmu_cmd->tcmu_dev 4096-ptr_max
CAPPED_DATA 0 tcmu_cmd 1
DATA_SOURCE 0 tcmu_cmd r tcmu_alloc_cmd
STR_LEN 0 tcmu_cmd->se_cmd (-1)
BIT_INFO 0 tcmu_cmd->se_cmd->transport_state 0x10,0xffffffff
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
USER_DATA 0 tcmu_cmd->se_cmd->residual_count 1-u32max
NO_OVERFLOW_SIMPLE 0 tcmu_cmd->dbi_cnt
NO_OVERFLOW_SIMPLE 0 tcmu_cmd->se_cmd->data_length
NO_OVERFLOW_SIMPLE 0 tcmu_cmd->se_cmd->reftag_seed
NO_OVERFLOW_SIMPLE 0 tcmu_cmd->se_cmd->sense_info
NO_OVERFLOW_SIMPLE 0 tcmu_cmd->se_cmd->t_data_nents
NO_OVERFLOW_SIMPLE 0 tcmu_cmd->se_cmd->t_data_nents_orig
NO_OVERFLOW_SIMPLE 0 tcmu_cmd->se_cmd->t_prot_nents
NO_OVERFLOW_SIMPLE 0 tcmu_cmd->se_cmd->t_task_lba
LOCK2 &udev->cmdr_lock
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct tcmu_dev)->cmdr_lock

drivers/target/target_core_user.c tcmu_release() -> tcmu_free_cmd()

Type Parameter Key Value
PARAM_VALUE 0 tcmu_cmd 4096-ptr_max
CAPPED_DATA 0 tcmu_cmd->dbi_cnt 1
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &idev->info_lock
LOCK2 &udev->cmdr_lock
TYPE_LOCK (struct tcmu_dev)->cmdr_lock
TYPE_LOCK (struct uio_device)->info_lock

drivers/target/target_core_user.c tcmu_reset_ring() -> tcmu_free_cmd()

Type Parameter Key Value
PARAM_VALUE 0 tcmu_cmd 4096-ptr_max
PARAM_VALUE 0 tcmu_cmd->se_cmd->se_dev->caw_sem.first_waiter->up 0-1
CAPPED_DATA 0 tcmu_cmd->dbi_cnt 1
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &buffer->mutex
LOCK2 &frag->frag_sem
LOCK2 &udev->cmdr_lock
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct configfs_buffer)->mutex
TYPE_LOCK (struct configfs_fragment)->frag_sem
TYPE_LOCK (struct tcmu_dev)->cmdr_lock

drivers/target/target_core_user.c tcmu_tmr_notify() -> tcmu_free_cmd()

Type Parameter Key Value
PARAM_VALUE 0 tcmu_cmd 4096-ptr_max
PARAM_VALUE 0 tcmu_cmd->cmd_id 0
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &udev->cmdr_lock
HALF_LOCKED2 &pool->lock
HALF_LOCKED2 &se_dev->lun_reset_mutex
TYPE_LOCK (struct tcmu_dev)->cmdr_lock