Defined in 1 files as a prototype:

Defined in 1 files as a function:

Referenced in 4 files:

Smatch caller information:

drivers/md/dm-pcache/cache_req.c cache_key_delete() -> cache_key_put()

Type Parameter Key Value
PARAM_VALUE 0 key 4096-ptr_max
PARAM_VALUE 0 key->cache_subtree 1-u64max
PARAM_VALUE 0 key->cache_subtree->root.rb_node 4096-ptr_max
PARAM_VALUE 0 key->flags 0
PARAM_VALUE 0 key->rb_node.rb_left 0,4096-ptr_max
PARAM_VALUE 0 key->rb_node.rb_right 0,4096-ptr_max
BUF_SIZE 0 key->cache_tree (-1),224
CAPPED_DATA 0 &key->rb_node 1
DATA_SOURCE 0 key $0
NOSPEC 0 key->len
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HOST_DATA 0 key->len 1-4194304[c]
USER_DATA 0 key->len 1-4194304[c]
NO_OVERFLOW_SIMPLE 0 key->cache_tree->key_pool.min_nr
NO_OVERFLOW_SIMPLE 0 key->cache_tree->n_subtrees
LOCK2 &cache_subtree->tree_lock
TYPE_LOCK (struct pcache_cache_subtree)->tree_lock

drivers/md/dm-pcache/cache_req.c cache_miss_req_free() -> cache_key_put()

Type Parameter Key Value
PARAM_VALUE 0 key 1-u64max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL

drivers/md/dm-pcache/cache_req.c cache_miss_req_free() -> cache_key_put()

Type Parameter Key Value
PARAM_VALUE 0 key 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL

drivers/md/dm-pcache/cache_req.c cache_miss_req_init() -> cache_key_put()

Type Parameter Key Value
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &cache_subtree->tree_lock
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct pcache_cache_subtree)->tree_lock

drivers/md/dm-pcache/cache_req.c cache_miss_req_init() -> cache_key_put()

Type Parameter Key Value
PARAM_VALUE 0 key 4096-ptr_max
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &cache_subtree->tree_lock
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct pcache_cache_subtree)->tree_lock

drivers/md/dm-pcache/cache_req.c cache_write() -> cache_key_put()

Type Parameter Key Value
PARAM_VALUE 0 key 4096-ptr_max
PARAM_VALUE 0 key->cache_tree 4096-ptr_max
PARAM_VALUE 0 key->len 1-4194304
BUF_SIZE 0 key->cache_tree (-1),224
CAPPED_DATA 0 key->len 1
DATA_SOURCE 0 key r cache_key_alloc
NOSPEC 0 key->len
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HOST_DATA 0 key->len 1-4194304[c]
HOST_DATA 0 key->off 4194304[c]
USER_DATA 0 key->len 1-4194304[c]
USER_DATA 0 key->off 4194304[c]
NO_OVERFLOW_SIMPLE 0 key->cache_tree->key_pool.min_nr
NO_OVERFLOW_SIMPLE 0 key->cache_tree->n_subtrees
HALF_LOCKED2 &md->io_barrier

drivers/md/dm-pcache/cache_req.c cache_write() -> cache_key_put()

Type Parameter Key Value
PARAM_VALUE 0 key 4096-ptr_max
PARAM_VALUE 0 key->cache_pos.cache_seg 4096-ptr_max
PARAM_VALUE 0 key->cache_pos.cache_seg->cache->seg_map_lock.rlock.dep_map->name 0-255
PARAM_VALUE 0 key->cache_pos.cache_seg->gen_lock.rlock.dep_map->name 0-255
PARAM_VALUE 0 key->cache_tree 4096-ptr_max
PARAM_VALUE 0 key->len 1-4194304
BUF_SIZE 0 key->cache_tree (-1),224
CAPPED_DATA 0 key->len 1
DATA_SOURCE 0 key r cache_key_alloc
NOSPEC 0 key->len
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HOST_DATA 0 key->len 1-4194304[c]
HOST_DATA 0 key->off 4194304[c]
USER_DATA 0 key->len 1-4194304[c]
USER_DATA 0 key->off 4194304[c]
NO_OVERFLOW_SIMPLE 0 key->cache_tree->key_pool.min_nr
NO_OVERFLOW_SIMPLE 0 key->cache_tree->n_subtrees
HALF_LOCKED2 &md->io_barrier

drivers/md/dm-pcache/cache_req.c miss_read_end_req() -> cache_key_put()

Type Parameter Key Value
PARAM_VALUE 0 key 4096-ptr_max
PARAM_VALUE 0 key->cache_subtree 4096-ptr_max
PARAM_VALUE 0 key->cache_subtree->tree_lock.rlock.dep_map->name 0-255
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL

drivers/md/dm-pcache/cache_key.c cache_key_delete() -> cache_key_put()

Type Parameter Key Value
PARAM_VALUE 0 key 4096-ptr_max
PARAM_VALUE 0 key->cache_subtree 1-u64max
PARAM_VALUE 0 key->cache_subtree->root.rb_node 4096-ptr_max
PARAM_VALUE 0 key->flags 0
PARAM_VALUE 0 key->rb_node.rb_left 0,4096-ptr_max
PARAM_VALUE 0 key->rb_node.rb_right 0,4096-ptr_max
CAPPED_DATA 0 &key->rb_node 1
DATA_SOURCE 0 key $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
UNITS 0 key unit_byte
LOCK2 &cache_subtree->tree_lock
TYPE_LOCK (struct pcache_cache_subtree)->tree_lock

drivers/md/dm-pcache/cache_key.c cache_key_insert() -> cache_key_put()

Type Parameter Key Value
PARAM_VALUE 0 key 4096-ptr_max
PARAM_VALUE 0 key->cache_tree 4096-ptr_max
PARAM_VALUE 0 key->list_node.next->next 4096-ptr_max
PARAM_VALUE 0 key->list_node.prev->next 4096-ptr_max
PARAM_VALUE 0 key->list_node.prev->prev 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
NO_OVERFLOW_SIMPLE 0 key->cache_tree->key_pool.min_nr
NO_OVERFLOW_SIMPLE 0 key->cache_tree->n_subtrees
LOCK2 &cache_subtree->tree_lock
HALF_LOCKED2 &cache->writeback_lock
HALF_LOCKED2 &cache_subtree->tree_lock
TYPE_LOCK (struct pcache_cache_subtree)->tree_lock

drivers/md/dm-pcache/cache_key.c fixup_overlap_contained() -> cache_key_put()

Type Parameter Key Value
PARAM_VALUE 0 key 4096-ptr_max
PARAM_VALUE 0 key->len 0
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &cache_subtree->tree_lock
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct pcache_cache_subtree)->tree_lock

drivers/md/dm-pcache/cache_key.c kset_replay() -> cache_key_put()

Type Parameter Key Value
PARAM_VALUE 0 key 4096-ptr_max
PARAM_VALUE 0 key->cache_tree 4096-ptr_max
PARAM_VALUE 0 key->len 1-u32max
PARAM_VALUE 0 key->list_node.next->next 4096-ptr_max
PARAM_VALUE 0 key->list_node.prev->next 4096-ptr_max
PARAM_VALUE 0 key->list_node.prev->prev 4096-ptr_max
BUF_SIZE 0 key->cache_tree (-1),224
DATA_SOURCE 0 key r cache_key_alloc
NOCHECK_CALL
NO_OVERFLOW_SIMPLE 0 key->cache_tree->key_pool.min_nr
NO_OVERFLOW_SIMPLE 0 key->cache_tree->n_subtrees
HALF_LOCKED2 &md->type_lock

drivers/md/dm-pcache/cache_key.c kset_replay() -> cache_key_put()

Type Parameter Key Value
PARAM_VALUE 0 key 4096-ptr_max
PARAM_VALUE 0 key->cache_pos.cache_seg 4096-ptr_max
PARAM_VALUE 0 key->cache_pos.cache_seg->gen 1-u64max
PARAM_VALUE 0 key->cache_tree 4096-ptr_max
PARAM_VALUE 0 key->len 1-u32max
PARAM_VALUE 0 key->list_node.next->next 4096-ptr_max
PARAM_VALUE 0 key->list_node.prev->next 4096-ptr_max
PARAM_VALUE 0 key->list_node.prev->prev 4096-ptr_max
PARAM_VALUE 0 key->seg_gen 0-18446744073709551614
BUF_SIZE 0 key->cache_tree (-1),224
CAPPED_DATA 0 key->seg_gen 1
DATA_SOURCE 0 key r cache_key_alloc
PARAM_COMPARE 0 key->cache_pos.cache_seg->gen > $0->seg_gen
NOCHECK_CALL
NO_OVERFLOW_SIMPLE 0 key->cache_tree->key_pool.min_nr
NO_OVERFLOW_SIMPLE 0 key->cache_tree->n_subtrees
HALF_LOCKED2 &md->type_lock

drivers/md/dm-pcache/cache_writeback.c cache_key_delete() -> cache_key_put()

Type Parameter Key Value
PARAM_VALUE 0 key 4096-ptr_max
PARAM_VALUE 0 key->cache_subtree 1-u64max
PARAM_VALUE 0 key->cache_subtree->root.rb_node 4096-ptr_max
PARAM_VALUE 0 key->flags 0
PARAM_VALUE 0 key->rb_node.rb_left 0,4096-ptr_max
PARAM_VALUE 0 key->rb_node.rb_right 0,4096-ptr_max
CAPPED_DATA 0 &key->rb_node 1
DATA_SOURCE 0 key $0
NOCHECK_CALL
UNITS 0 key unit_byte
LOCK2 &cache->writeback_lock
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct pcache_cache)->writeback_lock

drivers/md/dm-pcache/cache_writeback.c cache_kset_insert_tree() -> cache_key_put()

Type Parameter Key Value
PARAM_VALUE 0 key 4096-ptr_max
PARAM_VALUE 0 key->cache_tree 4096-ptr_max
PARAM_VALUE 0 key->len 1-u32max
BUF_SIZE 0 key->cache_tree (-1),224
DATA_SOURCE 0 key r cache_key_alloc
NOCHECK_CALL
NO_OVERFLOW_SIMPLE 0 key->cache_tree->key_pool.min_nr
NO_OVERFLOW_SIMPLE 0 key->cache_tree->n_subtrees
LOCK2 &cache->writeback_lock
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct pcache_cache)->writeback_lock