Lines Matching refs:st_map
249 struct bpf_struct_ops_map *st_map = (struct bpf_struct_ops_map *)map; in bpf_struct_ops_map_sys_lookup_elem() local
256 kvalue = &st_map->kvalue; in bpf_struct_ops_map_sys_lookup_elem()
268 memcpy(uvalue, st_map->uvalue, map->value_size); in bpf_struct_ops_map_sys_lookup_elem()
280 static void bpf_struct_ops_map_put_progs(struct bpf_struct_ops_map *st_map) in bpf_struct_ops_map_put_progs() argument
282 const struct btf_type *t = st_map->st_ops->type; in bpf_struct_ops_map_put_progs()
286 if (st_map->links[i]) { in bpf_struct_ops_map_put_progs()
287 bpf_link_put(st_map->links[i]); in bpf_struct_ops_map_put_progs()
288 st_map->links[i] = NULL; in bpf_struct_ops_map_put_progs()
355 struct bpf_struct_ops_map *st_map = (struct bpf_struct_ops_map *)map; in bpf_struct_ops_map_update_elem() local
356 const struct bpf_struct_ops *st_ops = st_map->st_ops; in bpf_struct_ops_map_update_elem()
388 uvalue = (struct bpf_struct_ops_value *)st_map->uvalue; in bpf_struct_ops_map_update_elem()
389 kvalue = (struct bpf_struct_ops_value *)&st_map->kvalue; in bpf_struct_ops_map_update_elem()
391 mutex_lock(&st_map->lock); in bpf_struct_ops_map_update_elem()
402 image = st_map->image; in bpf_struct_ops_map_update_elem()
403 image_end = st_map->image + PAGE_SIZE; in bpf_struct_ops_map_update_elem()
479 st_map->links[i] = &link->link; in bpf_struct_ops_map_update_elem()
497 set_memory_rox((long)st_map->image, 1); in bpf_struct_ops_map_update_elem()
513 set_memory_nx((long)st_map->image, 1); in bpf_struct_ops_map_update_elem()
514 set_memory_rw((long)st_map->image, 1); in bpf_struct_ops_map_update_elem()
518 bpf_struct_ops_map_put_progs(st_map); in bpf_struct_ops_map_update_elem()
523 mutex_unlock(&st_map->lock); in bpf_struct_ops_map_update_elem()
530 struct bpf_struct_ops_map *st_map; in bpf_struct_ops_map_delete_elem() local
532 st_map = (struct bpf_struct_ops_map *)map; in bpf_struct_ops_map_delete_elem()
533 prev_state = cmpxchg(&st_map->kvalue.state, in bpf_struct_ops_map_delete_elem()
538 st_map->st_ops->unreg(&st_map->kvalue.data); in bpf_struct_ops_map_delete_elem()
539 if (refcount_dec_and_test(&st_map->kvalue.refcnt)) in bpf_struct_ops_map_delete_elem()
575 struct bpf_struct_ops_map *st_map = (struct bpf_struct_ops_map *)map; in bpf_struct_ops_map_free() local
577 if (st_map->links) in bpf_struct_ops_map_free()
578 bpf_struct_ops_map_put_progs(st_map); in bpf_struct_ops_map_free()
579 bpf_map_area_free(st_map->links); in bpf_struct_ops_map_free()
580 bpf_jit_free_exec(st_map->image); in bpf_struct_ops_map_free()
581 bpf_map_area_free(st_map->uvalue); in bpf_struct_ops_map_free()
582 bpf_map_area_free(st_map); in bpf_struct_ops_map_free()
597 struct bpf_struct_ops_map *st_map; in bpf_struct_ops_map_alloc() local
614 st_map_size = sizeof(*st_map) + in bpf_struct_ops_map_alloc()
620 st_map = bpf_map_area_alloc(st_map_size, NUMA_NO_NODE); in bpf_struct_ops_map_alloc()
621 if (!st_map) in bpf_struct_ops_map_alloc()
624 st_map->st_ops = st_ops; in bpf_struct_ops_map_alloc()
625 map = &st_map->map; in bpf_struct_ops_map_alloc()
627 st_map->uvalue = bpf_map_area_alloc(vt->size, NUMA_NO_NODE); in bpf_struct_ops_map_alloc()
628 st_map->links = in bpf_struct_ops_map_alloc()
631 st_map->image = bpf_jit_alloc_exec(PAGE_SIZE); in bpf_struct_ops_map_alloc()
632 if (!st_map->uvalue || !st_map->links || !st_map->image) { in bpf_struct_ops_map_alloc()
637 mutex_init(&st_map->lock); in bpf_struct_ops_map_alloc()
638 set_vm_flush_reset_perms(st_map->image); in bpf_struct_ops_map_alloc()
671 struct bpf_struct_ops_map *st_map; in bpf_struct_ops_put_rcu() local
673 st_map = container_of(head, struct bpf_struct_ops_map, rcu); in bpf_struct_ops_put_rcu()
674 bpf_map_put(&st_map->map); in bpf_struct_ops_put_rcu()
683 struct bpf_struct_ops_map *st_map; in bpf_struct_ops_put() local
685 st_map = container_of(kvalue, struct bpf_struct_ops_map, in bpf_struct_ops_put()
698 call_rcu(&st_map->rcu, bpf_struct_ops_put_rcu); in bpf_struct_ops_put()