Defined in 1 files as a function:

Referenced in 1 files:

Smatch caller information:

drivers/pci/controller/pci-hyperv.c hv_compose_msi_msg() -> put_pcichild()

Type Parameter Key Value
PARAM_VALUE 0 hpdev 4096-ptr_max
CAPPED_DATA 0 hpdev->desc.win_slot.slot 1
DATA_SOURCE 0 hpdev r get_pcichild_wslot
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &_T->lock->msi.data->mutex

drivers/pci/controller/pci-hyperv.c hv_compose_msi_msg() -> put_pcichild()

Type Parameter Key Value
PARAM_VALUE 0 hpdev 4096-ptr_max
PARAM_VALUE 0 hpdev->hbus 4096-ptr_max
PARAM_VALUE 0 hpdev->hbus->hdev 4096-ptr_max
PARAM_VALUE 0 hpdev->hbus->hdev->channel 4096-ptr_max
PARAM_VALUE 0 hpdev->hbus->hdev->channel->outbound.ring_lock.rlock.dep_map->name 0-255
PARAM_VALUE 0 hpdev->hbus->hdev->channel->requestor.req_lock.rlock.dep_map->name 0-255
CAPPED_DATA 0 hpdev->desc.win_slot.slot 1
CAPPED_DATA 0 hpdev->hbus->hdev->channel->outbound.ring_buffer->read_index 1
CAPPED_DATA 0 hpdev->hbus->hdev->channel->outbound.ring_datasize 1
DATA_SOURCE 0 hpdev r get_pcichild_wslot
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &_T->lock->msi.data->mutex

drivers/pci/controller/pci-hyperv.c hv_compose_msi_msg() -> put_pcichild()

Type Parameter Key Value
PARAM_VALUE 0 hpdev 4096-ptr_max
CAPPED_DATA 0 hpdev->desc.win_slot.slot 1
DATA_SOURCE 0 hpdev r get_pcichild_wslot
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &_T->lock->msi.data->mutex

drivers/pci/controller/pci-hyperv.c hv_eject_device_work() -> put_pcichild()

Type Parameter Key Value
PARAM_VALUE 0 hpdev 4096-ptr_max
PARAM_VALUE 0 hpdev->hbus 4096-ptr_max
PARAM_VALUE 0 hpdev->hbus->bridge 4096-ptr_max
PARAM_VALUE 0 hpdev->hbus->device_list_lock.rlock.dep_map->name 0-255
PARAM_VALUE 0 hpdev->hbus->hdev 4096-ptr_max
PARAM_VALUE 0 hpdev->hbus->hdev->channel 4096-ptr_max
PARAM_VALUE 0 hpdev->hbus->hdev->channel->requestor.req_lock.rlock.dep_map->name 0-255
PARAM_VALUE 0 hpdev->hbus->state_lock.dep_map->name 0-255
PARAM_VALUE 0 hpdev->hbus->state_lock.first_waiter 0,4096-ptr_max
PARAM_VALUE 0 hpdev->hbus->state_lock.first_waiter->list.prev->next 5159360019465732096
PARAM_VALUE 0 hpdev->hbus->state_lock.osq.tail.counter 0-s32max
PARAM_VALUE 0 hpdev->hbus->state_lock.wait_lock.dep_map->name 0-255
PARAM_VALUE 0 hpdev->hbus->state_lock.wait_lock.owner (-1)
PARAM_VALUE 0 hpdev->hbus->state_lock.wait_lock.owner_cpu u32max
NOCHECK_CALL
LOCK2 &hbus->state_lock
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct hv_pcibus_device)->state_lock

drivers/pci/controller/pci-hyperv.c hv_eject_device_work() -> put_pcichild()

Type Parameter Key Value
PARAM_VALUE 0 hpdev 4096-ptr_max
PARAM_VALUE 0 hpdev->hbus->bridge 4096-ptr_max
PARAM_VALUE 0 hpdev->hbus->device_list_lock.rlock.dep_map->name 0-255
PARAM_VALUE 0 hpdev->hbus->hdev 4096-ptr_max
PARAM_VALUE 0 hpdev->hbus->hdev->channel 4096-ptr_max
PARAM_VALUE 0 hpdev->hbus->hdev->channel->requestor.req_lock.rlock.dep_map->name 0-255
PARAM_VALUE 0 hpdev->hbus->state_lock.dep_map->name 0-255
PARAM_VALUE 0 hpdev->hbus->state_lock.first_waiter 0,4096-ptr_max
PARAM_VALUE 0 hpdev->hbus->state_lock.first_waiter->list.prev->next 5159360019465732096
PARAM_VALUE 0 hpdev->hbus->state_lock.osq.tail.counter 0-s32max
PARAM_VALUE 0 hpdev->hbus->state_lock.wait_lock.dep_map->name 0-255
PARAM_VALUE 0 hpdev->hbus->state_lock.wait_lock.owner (-1)
PARAM_VALUE 0 hpdev->hbus->state_lock.wait_lock.owner_cpu u32max
CAPPED_DATA 0 hpdev 1
NOCHECK_CALL
LOCK2 &hbus->state_lock
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct hv_pcibus_device)->state_lock

drivers/pci/controller/pci-hyperv.c hv_eject_device_work() -> put_pcichild()

Type Parameter Key Value
PARAM_VALUE 0 hpdev 4096-ptr_max
PARAM_VALUE 0 hpdev->hbus->bridge 4096-ptr_max
PARAM_VALUE 0 hpdev->hbus->device_list_lock.rlock.dep_map->name 0-255
PARAM_VALUE 0 hpdev->hbus->hdev 4096-ptr_max
PARAM_VALUE 0 hpdev->hbus->hdev->channel 4096-ptr_max
PARAM_VALUE 0 hpdev->hbus->hdev->channel->requestor.req_lock.rlock.dep_map->name 0-255
PARAM_VALUE 0 hpdev->hbus->state_lock.dep_map->name 0-255
PARAM_VALUE 0 hpdev->hbus->state_lock.first_waiter 0,4096-ptr_max
PARAM_VALUE 0 hpdev->hbus->state_lock.first_waiter->list.prev->next 5159360019465732096
PARAM_VALUE 0 hpdev->hbus->state_lock.osq.tail.counter 0-s32max
PARAM_VALUE 0 hpdev->hbus->state_lock.wait_lock.dep_map->name 0-255
PARAM_VALUE 0 hpdev->hbus->state_lock.wait_lock.owner (-1)
PARAM_VALUE 0 hpdev->hbus->state_lock.wait_lock.owner_cpu u32max
CAPPED_DATA 0 hpdev 1
NOCHECK_CALL
LOCK2 &hbus->state_lock
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct hv_pcibus_device)->state_lock

drivers/pci/controller/pci-hyperv.c hv_msi_free() -> put_pcichild()

Type Parameter Key Value
PARAM_VALUE 0 hpdev 4096-ptr_max
CAPPED_DATA 0 hpdev->desc.win_slot.slot 1
DATA_SOURCE 0 hpdev r get_pcichild_wslot
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &domain->root->mutex

drivers/pci/controller/pci-hyperv.c hv_pci_assign_numa_node() -> put_pcichild()

Type Parameter Key Value
PARAM_VALUE 0 hpdev 4096-ptr_max
CAPPED_DATA 0 hpdev->desc.win_slot.slot 1
DATA_SOURCE 0 hpdev r get_pcichild_wslot
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &hbus->state_lock
LOCK2 global &pci_rescan_remove_lock
TYPE_LOCK (struct hv_pcibus_device)->state_lock

drivers/pci/controller/pci-hyperv.c hv_pci_bus_exit() -> put_pcichild()

Type Parameter Key Value
PARAM_VALUE 0 hpdev 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &child_device->mutex
TYPE_LOCK (struct device)->mutex

drivers/pci/controller/pci-hyperv.c hv_pci_bus_exit() -> put_pcichild()

Type Parameter Key Value
PARAM_VALUE 0 hpdev 4096-ptr_max
CAPPED_DATA 0 hpdev 1
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &child_device->mutex
TYPE_LOCK (struct device)->mutex

drivers/pci/controller/pci-hyperv.c hv_pci_onchannelcallback() -> put_pcichild()

Type Parameter Key Value
PARAM_VALUE 0 hpdev 4096-ptr_max
PARAM_VALUE 0 hpdev->hbus 4096-ptr_max
CAPPED_DATA 0 hpdev->desc.win_slot.slot 1
DATA_SOURCE 0 hpdev r get_pcichild_wslot
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &channel->sched_lock
HALF_LOCKED2 flags
HALF_LOCKED2 rcu_read

drivers/pci/controller/pci-hyperv.c hv_pci_onchannelcallback() -> put_pcichild()

Type Parameter Key Value
PARAM_VALUE 0 hpdev 4096-ptr_max
CAPPED_DATA 0 hpdev->desc.win_slot.slot 1
DATA_SOURCE 0 hpdev r get_pcichild_wslot
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &channel->sched_lock
HALF_LOCKED2 flags
HALF_LOCKED2 rcu_read

drivers/pci/controller/pci-hyperv.c hv_pcifront_read_config() -> put_pcichild()

Type Parameter Key Value
PARAM_VALUE 0 hpdev 4096-ptr_max
PARAM_VALUE 0 hpdev->hbus 4096-ptr_max
PARAM_VALUE 0 hpdev->hbus->config_lock.rlock.dep_map->name 0-255
CAPPED_DATA 0 hpdev->desc.win_slot.slot 1
DATA_SOURCE 0 hpdev r get_pcichild_wslot
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 global &inject_lock
HALF_LOCKED2 global &pci_lock
HALF_LOCKED2 irq

drivers/pci/controller/pci-hyperv.c hv_pcifront_write_config() -> put_pcichild()

Type Parameter Key Value
PARAM_VALUE 0 hpdev 4096-ptr_max
PARAM_VALUE 0 hpdev->hbus 4096-ptr_max
PARAM_VALUE 0 hpdev->hbus->config_lock.rlock.dep_map->name 0-255
CAPPED_DATA 0 hpdev->desc.win_slot.slot 1
DATA_SOURCE 0 hpdev r get_pcichild_wslot
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 global &inject_lock
HALF_LOCKED2 global &pci_lock
HALF_LOCKED2 irq

drivers/pci/controller/pci-hyperv.c hv_register_block_invalidate() -> put_pcichild()

Type Parameter Key Value
PARAM_VALUE 0 hpdev 4096-ptr_max
PARAM_VALUE 0 hpdev->invalidate_context 0,4096-ptr_max
CAPPED_DATA 0 hpdev->desc.win_slot.slot 1
DATA_SOURCE 0 hpdev r get_pcichild_wslot
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &dev->intf_state_mutex
HALF_LOCKED2 &devlink->lock
TYPE_LOCK (struct mlx5_core_dev)->intf_state_mutex

drivers/pci/controller/pci-hyperv.c hv_send_resources_allocated() -> put_pcichild()

Type Parameter Key Value
PARAM_VALUE 0 hpdev 4096-ptr_max
PARAM_VALUE 0 hpdev->desc.win_slot.slot 0-255
CAPPED_DATA 0 hpdev->desc.win_slot.slot 1
DATA_SOURCE 0 hpdev r get_pcichild_wslot
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &hbus->state_lock
TYPE_LOCK (struct hv_pcibus_device)->state_lock

drivers/pci/controller/pci-hyperv.c hv_send_resources_released() -> put_pcichild()

Type Parameter Key Value
PARAM_VALUE 0 hpdev 4096-ptr_max
PARAM_VALUE 0 hpdev->desc.win_slot.slot 0-s32max
CAPPED_DATA 0 hpdev->desc.win_slot.slot 1
DATA_SOURCE 0 hpdev r get_pcichild_wslot
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &hbus->state_lock

drivers/pci/controller/pci-hyperv.c pci_devices_present_work() -> put_pcichild()

Type Parameter Key Value
PARAM_VALUE 0 hpdev 4096-ptr_max
PARAM_VALUE 0 hpdev->reported_missing 1
PREEMPT_ADD <- disables preempt
NOCHECK_CALL
LOCK2 &hbus->device_list_lock
LOCK2 &hbus->state_lock
LOCK2 flags
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct hv_pcibus_device)->device_list_lock
TYPE_LOCK (struct hv_pcibus_device)->state_lock

drivers/pci/controller/pci-hyperv.c pci_devices_present_work() -> put_pcichild()

Type Parameter Key Value
PARAM_VALUE 0 hpdev 4096-ptr_max
NOCHECK_CALL
LOCK2 &hbus->state_lock
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct hv_pcibus_device)->state_lock