Defined in 2 files as a member:

Defined in 1 files as a function:

Referenced in 51 files:

Smatch caller information:

drivers/char/virtio_console.c __send_to_port() -> free_buf()

Type Parameter Key Value
PARAM_VALUE 0 buf 1-u64max
PARAM_VALUE 0 buf->dev->cma_area->alloc_mutex.first_waiter->list.prev->next 5159360019465732096
PARAM_VALUE 0 buf->dev->cma_area->alloc_mutex.first_waiter->list.prev->prev 5159360019465732096
PARAM_VALUE 0 buf->dev->cma_area->alloc_mutex.osq.tail.counter 0-s32max
PARAM_VALUE 0 buf->dev->cma_area->nranges s32min-s32max
PARAM_VALUE 0 buf->dev->dma_io_tlb_pools.next 4096-ptr_max
PARAM_VALUE 0 buf->dev->dma_io_tlb_pools.next->prev 4096-ptr_max
PARAM_VALUE 0 buf->dev->dma_io_tlb_pools.next->prev->prev 4096-ptr_max
PARAM_VALUE 0 buf->dev->dma_mem->spinlock.rlock.dep_map->name 0-255
PARAM_VALUE 0 buf->dev->dma_uses_io_tlb 1
PARAM_VALUE 0 buf->dev->iommu->pci_32bit_workaround 0-1
PARAM_VALUE 1 can_sleep 0
DATA_SOURCE 0 buf $4 [m]
NOSPEC 0 buf->len
NOSPEC 0 buf->size
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HOST_DATA 0 buf->dma 0-u64max
HOST_DATA 0 buf->len 0-u64max
HOST_DATA 0 buf->offset 0-u64max
HOST_DATA 0 buf->sgpages 0-u32max
HOST_DATA 0 buf->size 0-u64max
USER_DATA 0 buf->len 1-s32max[c][u]
USER_DATA 0 buf->size 1-s32max[c]
USER_DATA 0 *buf->buf 0-255
USER_PTR 0 buf->buf
LOCK2 &port->outvq_lock
LOCK2 flags
TYPE_LOCK (struct port)->outvq_lock

drivers/char/virtio_console.c control_work_handler() -> free_buf()

Type Parameter Key Value
PARAM_VALUE 0 buf 4096-ptr_max
PARAM_VALUE 0 buf->len 0-u32max
PARAM_VALUE 0 buf->offset 0
PARAM_VALUE 1 can_sleep 0
CAPPED_DATA 0 buf->len 1
DATA_SOURCE 0 buf r virtqueue_get_buf
PREEMPT_ADD <- disables preempt
NOCHECK_CALL
HOST_DATA 0 buf->dma 0-u64max
HOST_DATA 0 buf->len 0-u32max[c]
HOST_DATA 0 buf->sgpages 0-u32max
HOST_DATA 0 buf->size 0-u64max
LOCK2 &portdev->c_ivq_lock
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct ports_device)->c_ivq_lock

drivers/char/virtio_console.c discard_port_data() -> free_buf()

Type Parameter Key Value
PARAM_VALUE 0 buf 4096-ptr_max
PARAM_VALUE 1 can_sleep 0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HOST_DATA 0 buf->dma 0-u64max
HOST_DATA 0 buf->len 0-u32max[c]
HOST_DATA 0 buf->sgpages 0-u32max
HOST_DATA 0 buf->size 0-u64max
LOCK2 &port->inbuf_lock
HALF_LOCKED2 irq
TYPE_LOCK (struct port)->inbuf_lock

drivers/char/virtio_console.c fill_queue() -> free_buf()

Type Parameter Key Value
PARAM_VALUE 0 buf 4096-ptr_max
PARAM_VALUE 0 buf->buf 1-ptr_max
PARAM_VALUE 0 buf->dev 0,4096-ptr_max
PARAM_VALUE 0 buf->dev->cma_area->alloc_mutex.first_waiter->list.prev->next 5159360019465732096
PARAM_VALUE 0 buf->dev->cma_area->alloc_mutex.first_waiter->list.prev->prev 5159360019465732096
PARAM_VALUE 0 buf->dev->cma_area->alloc_mutex.osq.tail.counter 0-s32max
PARAM_VALUE 0 buf->dev->cma_area->nranges s32min-s32max
PARAM_VALUE 0 buf->dev->dma_io_tlb_lock.rlock.dep_map->name 0-255
PARAM_VALUE 0 buf->dev->dma_io_tlb_pools.next 4096-ptr_max
PARAM_VALUE 0 buf->dev->dma_io_tlb_pools.next->prev 4096-ptr_max
PARAM_VALUE 0 buf->dev->dma_io_tlb_pools.next->prev->prev 4096-ptr_max
PARAM_VALUE 0 buf->dev->dma_mem->spinlock.rlock.dep_map->name 0-255
PARAM_VALUE 0 buf->dev->dma_uses_io_tlb 1
PARAM_VALUE 0 buf->dev->iommu->attach_deferred 0-1
PARAM_VALUE 0 buf->len 0
PARAM_VALUE 0 buf->offset 0
PARAM_VALUE 0 buf->sgpages 0
PARAM_VALUE 0 buf->size 4096
PARAM_VALUE 1 can_sleep 1
BUF_SIZE 0 buf s32min-s32max
CAPPED_DATA 0 buf->dev 1
DATA_SOURCE 0 buf r alloc_buf
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL

drivers/char/virtio_console.c flush_bufs() -> free_buf()

Type Parameter Key Value
PARAM_VALUE 0 buf 1-u64max
DATA_SOURCE 0 buf r virtqueue_get_buf
DATA_SOURCE 1 can_sleep $1
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HOST_DATA 0 buf->dma 0-u64max
HOST_DATA 0 buf->len 0-u64max
HOST_DATA 0 buf->offset 0-u64max
HOST_DATA 0 buf->sgpages 0-u32max
HOST_DATA 0 buf->size 0-u64max

drivers/char/virtio_console.c port_fops_splice_write() -> free_buf()

Type Parameter Key Value
PARAM_VALUE 0 buf 4096-ptr_max
PARAM_VALUE 0 buf->buf 0-ptr_max
PARAM_VALUE 0 buf->dev 0,4096-ptr_max
PARAM_VALUE 0 buf->dev->cma_area->alloc_mutex.first_waiter->list.prev->next 5159360019465732096
PARAM_VALUE 0 buf->dev->cma_area->alloc_mutex.first_waiter->list.prev->prev 5159360019465732096
PARAM_VALUE 0 buf->dev->cma_area->alloc_mutex.osq.tail.counter 0-s32max
PARAM_VALUE 0 buf->dev->cma_area->nranges s32min-s32max
PARAM_VALUE 0 buf->dev->dma_io_tlb_lock.rlock.dep_map->name 0-255
PARAM_VALUE 0 buf->dev->dma_io_tlb_pools.next 4096-ptr_max
PARAM_VALUE 0 buf->dev->dma_io_tlb_pools.next->prev 4096-ptr_max
PARAM_VALUE 0 buf->dev->dma_io_tlb_pools.next->prev->prev 4096-ptr_max
PARAM_VALUE 0 buf->dev->dma_mem->spinlock.rlock.dep_map->name 0-255
PARAM_VALUE 0 buf->dev->dma_uses_io_tlb 1
PARAM_VALUE 0 buf->dev->iommu->attach_deferred 0-1
PARAM_VALUE 1 can_sleep 1
BUF_SIZE 0 buf s32min-s32max
CAPPED_DATA 0 buf->dev 1
DATA_SOURCE 0 buf r alloc_buf
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &inode->i_rwsem

drivers/char/virtio_console.c port_fops_write() -> free_buf()

Type Parameter Key Value
PARAM_VALUE 0 buf 4096-ptr_max
PARAM_VALUE 0 buf->buf 1-ptr_max
PARAM_VALUE 0 buf->dev 0,4096-ptr_max
PARAM_VALUE 0 buf->dev->cma_area->alloc_mutex.first_waiter->list.prev->next 5159360019465732096
PARAM_VALUE 0 buf->dev->cma_area->alloc_mutex.first_waiter->list.prev->prev 5159360019465732096
PARAM_VALUE 0 buf->dev->cma_area->alloc_mutex.osq.tail.counter 0-s32max
PARAM_VALUE 0 buf->dev->cma_area->nranges s32min-s32max
PARAM_VALUE 0 buf->dev->dma_io_tlb_lock.rlock.dep_map->name 0-255
PARAM_VALUE 0 buf->dev->dma_io_tlb_pools.next 4096-ptr_max
PARAM_VALUE 0 buf->dev->dma_io_tlb_pools.next->prev 4096-ptr_max
PARAM_VALUE 0 buf->dev->dma_io_tlb_pools.next->prev->prev 4096-ptr_max
PARAM_VALUE 0 buf->dev->dma_mem->spinlock.rlock.dep_map->name 0-255
PARAM_VALUE 0 buf->dev->dma_uses_io_tlb 1
PARAM_VALUE 0 buf->dev->iommu->attach_deferred 0-1
PARAM_VALUE 0 buf->len 0
PARAM_VALUE 0 buf->offset 0
PARAM_VALUE 0 buf->sgpages 0
PARAM_VALUE 0 buf->size 1-32768
PARAM_VALUE 1 can_sleep 1
BUF_SIZE 0 buf s32min-s32max
CAPPED_DATA 0 buf->dev 1
CAPPED_DATA 0 buf->size 1
DATA_SOURCE 0 buf r alloc_buf
NOCHECK_CALL
USER_DATA 0 buf->size 1-32768[c]
USER_DATA 0 *buf->buf 0-255
USER_PTR 0 buf->buf

drivers/char/virtio_console.c reclaim_consumed_buffers() -> free_buf()

Type Parameter Key Value
PARAM_VALUE 0 buf 1-u64max
PARAM_VALUE 1 can_sleep 0
DATA_SOURCE 0 buf r virtqueue_get_buf
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HOST_DATA 0 buf->dma 0-u64max
HOST_DATA 0 buf->len 0-u64max
HOST_DATA 0 buf->offset 0-u64max
HOST_DATA 0 buf->sgpages 0-u32max
HOST_DATA 0 buf->size 0-u64max
LOCK2 &port->outvq_lock
HALF_LOCKED2 flags
HALF_LOCKED2 irq
TYPE_LOCK (struct port)->outvq_lock

drivers/char/virtio_console.c reclaim_dma_bufs() -> free_buf()

Type Parameter Key Value
PARAM_VALUE 0 buf 4096-ptr_max
PARAM_VALUE 1 can_sleep 1
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL

drivers/char/virtio_console.c remove_vqs() -> free_buf()

Type Parameter Key Value
PARAM_VALUE 0 buf 1-u64max
PARAM_VALUE 1 can_sleep 1
DATA_SOURCE 0 buf r virtqueue_detach_unused_buf
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL