Documented in 1 files:

Defined in 4 files as a function:

Referenced in 4 files:

Smatch caller information:

kernel/bpf/bpf_local_storage.c bpf_local_storage_alloc() -> select_bucket()

Type Parameter Key Value
PARAM_VALUE 0 map 4096-ptr_max
PARAM_VALUE 1 key 4096-ptr_max
BUF_SIZE 0 map s32min-(-1),1-s32max
BUF_SIZE 0 map s32min-(-1),1-s32max
BUF_SIZE 1 key (-1)-s32max
BUF_SIZE 1 key (-1)-s32max
DATA_SOURCE 0 map $1
DATA_SOURCE 1 key r bpf_map_kmalloc_nolock
BIT_INFO 1 key->lock 0x0,0x7fffffff
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 rcu_read

kernel/bpf/bpf_local_storage.c bpf_local_storage_update() -> select_bucket()

Type Parameter Key Value
PARAM_VALUE 0 map 4096-ptr_max
PARAM_VALUE 1 key 4096-ptr_max
BUF_SIZE 0 map s32min-(-1),1-s32max
BUF_SIZE 0 map s32min-(-1),1-s32max
CAPPED_DATA 1 &key->lock 1
DATA_SOURCE 0 map $1
PREEMPT_ADD <- disables preempt
LOCK2 flags

kernel/bpf/bpf_local_storage.c bpf_selem_link_map() -> select_bucket()

Type Parameter Key Value
PARAM_VALUE 0 map 4096-ptr_max
PARAM_VALUE 1 key 4096-ptr_max
CAPPED_DATA 0 map->map.record->cnt 1
DATA_SOURCE 0 map $0
DATA_SOURCE 1 key $1
BIT_INFO 0 map->map.map_flags 0x200,0xffffffffffffffff
RX_PATH
TASK_NOT_RUNNING
LOCK2 rcu_read
HALF_LOCKED2 &newsk->sk_lock.slock
HALF_LOCKED2 &sk->sk_lock.slock
HALF_LOCKED2 sk

kernel/bpf/bpf_local_storage.c bpf_selem_unlink_map() -> select_bucket()

Type Parameter Key Value
PARAM_VALUE 1 key 4096-ptr_max
PREEMPT_ADD
LOCK2 flags

kernel/bpf/bpf_local_storage.c bpf_selem_unlink_nofail() -> select_bucket()

Type Parameter Key Value
PARAM_VALUE 0 map 1-u64max
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
LOCK2 rcu_read

drivers/md/dm-vdo/int-map.c vdo_int_map_get() -> select_bucket()

Type Parameter Key Value
DATA_SOURCE 0 map $0
DATA_SOURCE 1 key $1
RX_PATH
TASK_NOT_RUNNING
UNITS 1 key unit_byte
HALF_LOCKED2 &bio_queue_data->lock

drivers/md/dm-vdo/int-map.c vdo_int_map_put() -> select_bucket()

Type Parameter Key Value
DATA_SOURCE 0 map $0
DATA_SOURCE 1 key $1
RX_PATH
TASK_NOT_RUNNING
NO_OVERFLOW_SIMPLE 0 map->bucket_count
UNITS 1 key unit_byte
HALF_LOCKED2 &bio_queue_data->lock

drivers/md/dm-vdo/int-map.c vdo_int_map_put() -> select_bucket()

Type Parameter Key Value
PARAM_VALUE 0 map 4096-ptr_max
DATA_SOURCE 0 map $0
DATA_SOURCE 1 key $1
RX_PATH
TASK_NOT_RUNNING
NO_OVERFLOW_SIMPLE 0 map->bucket_count
UNITS 1 key unit_byte
HALF_LOCKED2 &bio_queue_data->lock

drivers/md/dm-vdo/int-map.c vdo_int_map_remove() -> select_bucket()

Type Parameter Key Value
DATA_SOURCE 0 map $0
DATA_SOURCE 1 key $1
RX_PATH
TASK_NOT_RUNNING
UNITS 1 key unit_byte
HALF_LOCKED2 &bio_queue_data->lock

kernel/bpf/hashtab.c __htab_map_lookup_elem() -> select_bucket()

Type Parameter Key Value
PARAM_VALUE 0 map 4096-ptr_max
DATA_SOURCE 1 key r htab_map_hash
RX_PATH
TASK_NOT_RUNNING
USER_DATA 1 key 0-u32max[c][u]
HALF_LOCKED2 &m->lock
HALF_LOCKED2 rcu_read

kernel/bpf/hashtab.c delete_all_elements() -> select_bucket()

Type Parameter Key Value
PARAM_VALUE 0 map 4096-ptr_max
PARAM_VALUE 0 map->n_buckets 1-u32max
PARAM_VALUE 1 key 0-s32max
CAPPED_DATA 1 key 1
DATA_SOURCE 0 map $0
PARAM_COMPARE 0 map->n_buckets > $1
PARAM_COMPARE 1 key < $0->n_buckets

kernel/bpf/hashtab.c fd_htab_map_free() -> select_bucket()

Type Parameter Key Value
PARAM_VALUE 0 map 4096-ptr_max
PARAM_VALUE 0 map->n_buckets 1-u32max
PARAM_VALUE 1 key 0-s32max
CAPPED_DATA 1 key 1
PARAM_COMPARE 0 map->n_buckets > $1
PARAM_COMPARE 1 key < $0->n_buckets

kernel/bpf/hashtab.c htab_free_malloced_internal_structs() -> select_bucket()

Type Parameter Key Value
PARAM_VALUE 0 map 4096-ptr_max
PARAM_VALUE 0 map->n_buckets 1-u32max
PARAM_VALUE 1 key 0-s32max
CAPPED_DATA 1 key 1
DATA_SOURCE 0 map $0
PARAM_COMPARE 0 map->n_buckets > $1
PARAM_COMPARE 1 key < $0->n_buckets
RX_PATH
TASK_NOT_RUNNING
LOCK2 rcu_read
HALF_LOCKED2 global &sockmap_mutex

kernel/bpf/hashtab.c htab_map_get_next_key() -> select_bucket()

Type Parameter Key Value
PARAM_VALUE 0 map 4096-ptr_max
DATA_SOURCE 1 key r htab_map_hash
RX_PATH
TASK_NOT_RUNNING
USER_DATA 1 key 0-u32max[c][u]
LOCK2 rcu_read
HALF_LOCKED2 &m->lock

kernel/bpf/hashtab.c htab_map_get_next_key() -> select_bucket()

Type Parameter Key Value
PARAM_VALUE 0 map 4096-ptr_max
PARAM_VALUE 0 map->n_buckets 1-u32max
PARAM_VALUE 1 key 0-4294967294
CAPPED_DATA 1 key 1
PARAM_COMPARE 0 map->n_buckets > $1
PARAM_COMPARE 1 key < $0->n_buckets
RX_PATH
TASK_NOT_RUNNING
USER_DATA 1 key 1-s32max[c]
LOCK2 rcu_read
HALF_LOCKED2 &m->lock