Defined in 2 files as a function:
Referenced in 4 files:
- block/blk-flush.c, line 214
- block/blk-mq.c
- io_uring/io_uring.c, line 1102
- io_uring/timeout.c, line 90
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 |