Defined in 2 files as a function:

Referenced in 4 files:

Smatch caller information:

block/blk-mq.c blk_mq_end_request_batch() -> req_ref_put_and_test()

Type Parameter Key Value
PARAM_VALUE 0 req 4096-ptr_max
CAPPED_DATA 0 req 1
DATA_SOURCE 0 req r rq_list_pop
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &ctx->uring_lock

block/blk-mq.c blk_mq_free_request() -> req_ref_put_and_test()

Type Parameter Key Value
PARAM_VALUE 0 req 4096-ptr_max
BUF_SIZE 0 req (-1)-s32max
BUF_SIZE 0 req (-1)-s32max
BUF_SIZE 0 req->end_io_data (-1),96
CAPPED_DATA 0 req 1
DATA_SOURCE 0 req $0
STR_LEN 0 req->end_io_data (-1)
NOSPEC 0 req->__data_len
NOSPEC 0 req->__sector
NOSPEC 0 req->bio->bi_iter.bi_sector
NOSPEC 0 req->bio->bi_iter.bi_size
NOSPEC 0 req->biotail->bi_iter.bi_sector
NOSPEC 0 req->biotail->bi_iter.bi_size
NOSPEC 0 req->biotail->bi_next->bi_iter.bi_sector
NOSPEC 0 req->biotail->bi_next->bi_iter.bi_size
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
HOST_DATA 0 req->__data_len 0-u32max[c]
HOST_DATA 0 req->__sector 0-u64max
HOST_DATA 0 req->bio->bi_iter.bi_sector 0-u64max
HOST_DATA 0 req->bio->bi_iter.bi_size 0-u32max[c]
HOST_DATA 0 req->bio->bi_max_vecs 0-4,16,64,128,256[c]
HOST_DATA 0 req->biotail->bi_iter.bi_sector 0-u64max
HOST_DATA 0 req->biotail->bi_iter.bi_size 0-u32max[c]
HOST_DATA 0 req->biotail->bi_max_vecs 0-u16max[c]
HOST_DATA 0 req->biotail->bi_next->bi_iter.bi_sector 0-u64max
HOST_DATA 0 req->biotail->bi_next->bi_iter.bi_size 1024-4294966272[c]
USER_DATA 0 req->__data_len 0-u32max
USER_DATA 0 req->__sector 0-u64max
USER_DATA 0 req->bio->bi_ioprio 0-u16max
USER_DATA 0 req->bio->bi_iter.bi_sector 0-u64max
USER_DATA 0 req->bio->bi_iter.bi_size 0-u32max
USER_DATA 0 req->bio->bi_max_vecs 0-u16max[c]
USER_DATA 0 req->biotail->bi_ioprio 0-u16max
USER_DATA 0 req->biotail->bi_iter.bi_sector 0-u64max
USER_DATA 0 req->biotail->bi_iter.bi_size 0-u32max
USER_DATA 0 req->biotail->bi_max_vecs 0-u16max[c]
USER_DATA 0 req->biotail->bi_next->bi_ioprio 0-u16max
USER_DATA 0 req->biotail->bi_next->bi_iter.bi_sector 0-u64max
USER_DATA 0 req->biotail->bi_next->bi_iter.bi_size 0-u32max
USER_DATA 0 req->biotail->bi_next->bi_max_vecs 0-256[c]
USER_DATA 0 req->tag 1-65534[c]
NO_OVERFLOW_SIMPLE 0 req->elv.icq->ioc
NO_OVERFLOW_SIMPLE 0 req->elv.icq->q->async_depth
NO_OVERFLOW_SIMPLE 0 req->elv.icq->q->limits.discard_granularity
NO_OVERFLOW_SIMPLE 0 req->elv.icq->q->limits.io_min
NO_OVERFLOW_SIMPLE 0 req->elv.icq->q->limits.logical_block_size
NO_OVERFLOW_SIMPLE 0 req->elv.icq->q->limits.max_discard_sectors
NO_OVERFLOW_SIMPLE 0 req->elv.icq->q->limits.max_hw_discard_sectors
NO_OVERFLOW_SIMPLE 0 req->elv.icq->q->limits.max_open_zones
NO_OVERFLOW_SIMPLE 0 req->elv.icq->q->limits.physical_block_size
NO_OVERFLOW_SIMPLE 0 req->elv.icq->q->limits.zone_write_granularity
NO_OVERFLOW_SIMPLE 0 req->elv.icq->q->nr_hw_queues
NO_OVERFLOW_SIMPLE 0 req->elv.icq->q->nr_requests
NO_OVERFLOW_SIMPLE 0 req->elv.icq->q->q_usage_counter.percpu_count_ptr
NO_OVERFLOW_SIMPLE 0 req->q->async_depth
NO_OVERFLOW_SIMPLE 0 req->q->limits.discard_granularity
NO_OVERFLOW_SIMPLE 0 req->q->limits.io_min
NO_OVERFLOW_SIMPLE 0 req->q->limits.logical_block_size
NO_OVERFLOW_SIMPLE 0 req->q->limits.max_discard_sectors
NO_OVERFLOW_SIMPLE 0 req->q->limits.max_hw_discard_sectors
NO_OVERFLOW_SIMPLE 0 req->q->limits.max_open_zones
NO_OVERFLOW_SIMPLE 0 req->q->limits.physical_block_size
NO_OVERFLOW_SIMPLE 0 req->q->limits.zone_write_granularity
NO_OVERFLOW_SIMPLE 0 req->q->nr_hw_queues
NO_OVERFLOW_SIMPLE 0 req->q->nr_requests
NO_OVERFLOW_SIMPLE 0 req->q->q_usage_counter.percpu_count_ptr
HALF_LOCKED2 &attr->mutex
HALF_LOCKED2 &cd->lock
HALF_LOCKED2 &of->mutex
HALF_LOCKED2 &vblk->vdev_mutex

block/blk-mq.c blk_mq_put_rq_ref() -> req_ref_put_and_test()

Type Parameter Key Value
PARAM_VALUE 0 req 4096-ptr_max
PARAM_VALUE 0 req->ref.counter 0-s32max
CAPPED_DATA 0 req->tag 1
DATA_SOURCE 0 req $0
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &khd->lock

io_uring/timeout.c io_put_req() -> req_ref_put_and_test()

Type Parameter Key Value
PARAM_VALUE 0 req 4096-ptr_max
DATA_SOURCE 0 req $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING

io_uring/io_uring.c io_free_batch_list() -> req_ref_put_and_test()

Type Parameter Key Value
PARAM_VALUE 0 req 4096-ptr_max
PARAM_VALUE 0 req->flags 1048576-u64max
BIT_INFO 0 req->flags 0x100000,0xfffffffffffbffff
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &ctx->uring_lock

block/blk-flush.c flush_end_io() -> req_ref_put_and_test()

Type Parameter Key Value
PARAM_VALUE 0 req 4096-ptr_max
BUF_SIZE 0 req (-1)-s32max
BUF_SIZE 0 req (-1)-s32max
CAPPED_DATA 0 req 1
DATA_SOURCE 0 req $0
NOSPEC 0 req->__data_len
NOSPEC 0 req->__sector
NOSPEC 0 req->bio->bi_iter.bi_sector
NOSPEC 0 req->bio->bi_iter.bi_size
NOSPEC 0 req->biotail->bi_iter.bi_sector
NOSPEC 0 req->biotail->bi_iter.bi_size
NOSPEC 0 req->biotail->bi_next->bi_iter.bi_sector
NOSPEC 0 req->biotail->bi_next->bi_iter.bi_size
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
HOST_DATA 0 req->__data_len 0-u32max[c]
HOST_DATA 0 req->__sector 0-u64max
HOST_DATA 0 req->bio->bi_iter.bi_sector 0-u64max
HOST_DATA 0 req->bio->bi_iter.bi_size 0-u32max[c]
HOST_DATA 0 req->bio->bi_max_vecs 0-4,16,64,128,256[c]
HOST_DATA 0 req->biotail->bi_iter.bi_sector 0-u64max
HOST_DATA 0 req->biotail->bi_iter.bi_size 0-u32max[c]
HOST_DATA 0 req->biotail->bi_max_vecs 0-u16max[c]
HOST_DATA 0 req->biotail->bi_next->bi_iter.bi_sector 0-u64max
HOST_DATA 0 req->biotail->bi_next->bi_iter.bi_size 1024-4294966272[c]
USER_DATA 0 req->__data_len 0-u32max
USER_DATA 0 req->__sector 0-u64max
USER_DATA 0 req->bio->bi_ioprio 0-u16max
USER_DATA 0 req->bio->bi_iter.bi_sector 0-u64max
USER_DATA 0 req->bio->bi_iter.bi_size 0-u32max
USER_DATA 0 req->bio->bi_max_vecs 0-u16max[c]
USER_DATA 0 req->biotail->bi_ioprio 0-u16max
USER_DATA 0 req->biotail->bi_iter.bi_sector 0-u64max
USER_DATA 0 req->biotail->bi_iter.bi_size 0-u32max
USER_DATA 0 req->biotail->bi_max_vecs 0-u16max[c]
USER_DATA 0 req->biotail->bi_next->bi_ioprio 0-u16max
USER_DATA 0 req->biotail->bi_next->bi_iter.bi_sector 0-u64max
USER_DATA 0 req->biotail->bi_next->bi_iter.bi_size 0-u32max
USER_DATA 0 req->biotail->bi_next->bi_max_vecs 0-256[c]
USER_DATA 0 req->tag 1-65534[c]
NO_OVERFLOW_SIMPLE 0 req->bio->bi_iter.bi_sector
NO_OVERFLOW_SIMPLE 0 req->bio->bi_max_vecs
NO_OVERFLOW_SIMPLE 0 req->elv.icq->ioc
NO_OVERFLOW_SIMPLE 0 req->elv.icq->q->async_depth
NO_OVERFLOW_SIMPLE 0 req->elv.icq->q->limits.discard_granularity
NO_OVERFLOW_SIMPLE 0 req->elv.icq->q->limits.io_min
NO_OVERFLOW_SIMPLE 0 req->elv.icq->q->limits.logical_block_size
NO_OVERFLOW_SIMPLE 0 req->elv.icq->q->limits.max_discard_sectors
NO_OVERFLOW_SIMPLE 0 req->elv.icq->q->limits.max_hw_discard_sectors
NO_OVERFLOW_SIMPLE 0 req->elv.icq->q->limits.max_open_zones
NO_OVERFLOW_SIMPLE 0 req->elv.icq->q->limits.physical_block_size
NO_OVERFLOW_SIMPLE 0 req->elv.icq->q->limits.zone_write_granularity
NO_OVERFLOW_SIMPLE 0 req->elv.icq->q->nr_hw_queues
NO_OVERFLOW_SIMPLE 0 req->elv.icq->q->nr_requests
NO_OVERFLOW_SIMPLE 0 req->elv.icq->q->q_usage_counter.percpu_count_ptr
NO_OVERFLOW_SIMPLE 0 req->q->async_depth
NO_OVERFLOW_SIMPLE 0 req->q->limits.discard_granularity
NO_OVERFLOW_SIMPLE 0 req->q->limits.io_min
NO_OVERFLOW_SIMPLE 0 req->q->limits.logical_block_size
NO_OVERFLOW_SIMPLE 0 req->q->limits.max_discard_sectors
NO_OVERFLOW_SIMPLE 0 req->q->limits.max_hw_discard_sectors
NO_OVERFLOW_SIMPLE 0 req->q->limits.max_open_zones
NO_OVERFLOW_SIMPLE 0 req->q->limits.physical_block_size
NO_OVERFLOW_SIMPLE 0 req->q->limits.zone_write_granularity
NO_OVERFLOW_SIMPLE 0 req->q->nr_hw_queues
NO_OVERFLOW_SIMPLE 0 req->q->nr_requests
NO_OVERFLOW_SIMPLE 0 req->q->q_usage_counter.percpu_count_ptr
LOCK2 &fq->mq_flush_lock
LOCK2 flags
TYPE_LOCK (struct blk_flush_queue)->mq_flush_lock