Lines Matching refs:map

25 	struct bpf_map map;  member
60 struct bpf_map __rcu *map; member
472 static int bpf_struct_ops_map_get_next_key(struct bpf_map *map, void *key, in bpf_struct_ops_map_get_next_key() argument
482 int bpf_struct_ops_map_sys_lookup_elem(struct bpf_map *map, void *key, in bpf_struct_ops_map_sys_lookup_elem() argument
485 struct bpf_struct_ops_map *st_map = (struct bpf_struct_ops_map *)map; in bpf_struct_ops_map_sys_lookup_elem()
497 memset(value, 0, map->value_size); in bpf_struct_ops_map_sys_lookup_elem()
505 memcpy(uvalue, st_map->uvalue, map->value_size); in bpf_struct_ops_map_sys_lookup_elem()
513 refcnt = atomic64_read(&map->refcnt) - atomic64_read(&map->usercnt); in bpf_struct_ops_map_sys_lookup_elem()
519 static void *bpf_struct_ops_map_lookup_elem(struct bpf_map *map, void *key) in bpf_struct_ops_map_lookup_elem() argument
676 static long bpf_struct_ops_map_update_elem(struct bpf_map *map, void *key, in bpf_struct_ops_map_update_elem() argument
679 struct bpf_struct_ops_map *st_map = (struct bpf_struct_ops_map *)map; in bpf_struct_ops_map_update_elem()
727 memcpy(uvalue, value, map->value_size); in bpf_struct_ops_map_update_elem()
860 if (st_map->map.map_flags & BPF_F_LINK) { in bpf_struct_ops_map_update_elem()
878 bpf_map_inc(map); in bpf_struct_ops_map_update_elem()
897 memset(uvalue, 0, map->value_size); in bpf_struct_ops_map_update_elem()
898 memset(kvalue, 0, map->value_size); in bpf_struct_ops_map_update_elem()
907 static long bpf_struct_ops_map_delete_elem(struct bpf_map *map, void *key) in bpf_struct_ops_map_delete_elem() argument
912 st_map = (struct bpf_struct_ops_map *)map; in bpf_struct_ops_map_delete_elem()
913 if (st_map->map.map_flags & BPF_F_LINK) in bpf_struct_ops_map_delete_elem()
922 bpf_map_put(map); in bpf_struct_ops_map_delete_elem()
935 static void bpf_struct_ops_map_seq_show_elem(struct bpf_map *map, void *key, in bpf_struct_ops_map_seq_show_elem() argument
938 struct bpf_struct_ops_map *st_map = (struct bpf_struct_ops_map *)map; in bpf_struct_ops_map_seq_show_elem()
942 value = kmalloc(map->value_size, GFP_USER | __GFP_NOWARN); in bpf_struct_ops_map_seq_show_elem()
946 err = bpf_struct_ops_map_sys_lookup_elem(map, key, value); in bpf_struct_ops_map_seq_show_elem()
949 map->btf_vmlinux_value_type_id, in bpf_struct_ops_map_seq_show_elem()
957 static void __bpf_struct_ops_map_free(struct bpf_map *map) in __bpf_struct_ops_map_free() argument
959 struct bpf_struct_ops_map *st_map = (struct bpf_struct_ops_map *)map; in __bpf_struct_ops_map_free()
972 static void bpf_struct_ops_map_free(struct bpf_map *map) in bpf_struct_ops_map_free() argument
974 struct bpf_struct_ops_map *st_map = (struct bpf_struct_ops_map *)map; in bpf_struct_ops_map_free()
1002 __bpf_struct_ops_map_free(map); in bpf_struct_ops_map_free()
1034 struct bpf_map *map; in bpf_struct_ops_map_alloc() local
1090 map = &st_map->map; in bpf_struct_ops_map_alloc()
1108 bpf_map_init_from_attr(map, attr); in bpf_struct_ops_map_alloc()
1110 return map; in bpf_struct_ops_map_alloc()
1113 __bpf_struct_ops_map_free(map); in bpf_struct_ops_map_alloc()
1120 static u64 bpf_struct_ops_map_mem_usage(const struct bpf_map *map) in bpf_struct_ops_map_mem_usage() argument
1122 struct bpf_struct_ops_map *st_map = (struct bpf_struct_ops_map *)map; in bpf_struct_ops_map_mem_usage()
1157 struct bpf_map *map; in bpf_struct_ops_get() local
1162 map = __bpf_map_inc_not_zero(&st_map->map, false); in bpf_struct_ops_get()
1163 return !IS_ERR(map); in bpf_struct_ops_get()
1174 bpf_map_put(&st_map->map); in bpf_struct_ops_put()
1177 static bool bpf_struct_ops_valid_to_reg(struct bpf_map *map) in bpf_struct_ops_valid_to_reg() argument
1179 struct bpf_struct_ops_map *st_map = (struct bpf_struct_ops_map *)map; in bpf_struct_ops_valid_to_reg()
1181 return map->map_type == BPF_MAP_TYPE_STRUCT_OPS && in bpf_struct_ops_valid_to_reg()
1182 map->map_flags & BPF_F_LINK && in bpf_struct_ops_valid_to_reg()
1194 rcu_dereference_protected(st_link->map, true); in bpf_struct_ops_map_link_dealloc()
1197 bpf_map_put(&st_map->map); in bpf_struct_ops_map_link_dealloc()
1206 struct bpf_map *map; in bpf_struct_ops_map_link_show_fdinfo() local
1210 map = rcu_dereference(st_link->map); in bpf_struct_ops_map_link_show_fdinfo()
1211 if (map) in bpf_struct_ops_map_link_show_fdinfo()
1212 seq_printf(seq, "map_id:\t%d\n", map->id); in bpf_struct_ops_map_link_show_fdinfo()
1220 struct bpf_map *map; in bpf_struct_ops_map_link_fill_link_info() local
1224 map = rcu_dereference(st_link->map); in bpf_struct_ops_map_link_fill_link_info()
1225 if (map) in bpf_struct_ops_map_link_fill_link_info()
1226 info->struct_ops.map_id = map->id; in bpf_struct_ops_map_link_fill_link_info()
1240 st_map = container_of(new_map, struct bpf_struct_ops_map, map); in bpf_struct_ops_map_link_update()
1250 old_map = rcu_dereference_protected(st_link->map, lockdep_is_held(&update_mutex)); in bpf_struct_ops_map_link_update()
1260 old_st_map = container_of(old_map, struct bpf_struct_ops_map, map); in bpf_struct_ops_map_link_update()
1272 rcu_assign_pointer(st_link->map, new_map); in bpf_struct_ops_map_link_update()
1285 struct bpf_map *map; in bpf_struct_ops_map_link_detach() local
1289 map = rcu_dereference_protected(st_link->map, lockdep_is_held(&update_mutex)); in bpf_struct_ops_map_link_detach()
1290 if (!map) { in bpf_struct_ops_map_link_detach()
1294 st_map = container_of(map, struct bpf_struct_ops_map, map); in bpf_struct_ops_map_link_detach()
1298 RCU_INIT_POINTER(st_link->map, NULL); in bpf_struct_ops_map_link_detach()
1302 bpf_map_put(&st_map->map); in bpf_struct_ops_map_link_detach()
1318 return rcu_access_pointer(st_link->map) ? 0 : EPOLLHUP; in bpf_struct_ops_map_link_poll()
1335 struct bpf_map *map; in bpf_struct_ops_link_create() local
1338 map = bpf_map_get(attr->link_create.map_fd); in bpf_struct_ops_link_create()
1339 if (IS_ERR(map)) in bpf_struct_ops_link_create()
1340 return PTR_ERR(map); in bpf_struct_ops_link_create()
1342 st_map = (struct bpf_struct_ops_map *)map; in bpf_struct_ops_link_create()
1344 if (!bpf_struct_ops_valid_to_reg(map)) { in bpf_struct_ops_link_create()
1374 RCU_INIT_POINTER(link->map, map); in bpf_struct_ops_link_create()
1380 bpf_map_put(map); in bpf_struct_ops_link_create()
1385 void bpf_map_struct_ops_info_fill(struct bpf_map_info *info, struct bpf_map *map) in bpf_map_struct_ops_info_fill() argument
1387 struct bpf_struct_ops_map *st_map = (struct bpf_struct_ops_map *)map; in bpf_map_struct_ops_info_fill()