Lines Matching refs:st_map
248 struct bpf_struct_ops_map *st_map = (struct bpf_struct_ops_map *)map; in bpf_struct_ops_map_sys_lookup_elem() local
255 kvalue = &st_map->kvalue; in bpf_struct_ops_map_sys_lookup_elem()
267 memcpy(uvalue, st_map->uvalue, map->value_size); in bpf_struct_ops_map_sys_lookup_elem()
279 static void bpf_struct_ops_map_put_progs(struct bpf_struct_ops_map *st_map) in bpf_struct_ops_map_put_progs() argument
281 const struct btf_type *t = st_map->st_ops->type; in bpf_struct_ops_map_put_progs()
285 if (st_map->progs[i]) { in bpf_struct_ops_map_put_progs()
286 bpf_prog_put(st_map->progs[i]); in bpf_struct_ops_map_put_progs()
287 st_map->progs[i] = NULL; in bpf_struct_ops_map_put_progs()
335 struct bpf_struct_ops_map *st_map = (struct bpf_struct_ops_map *)map; in bpf_struct_ops_map_update_elem() local
336 const struct bpf_struct_ops *st_ops = st_map->st_ops; in bpf_struct_ops_map_update_elem()
368 uvalue = (struct bpf_struct_ops_value *)st_map->uvalue; in bpf_struct_ops_map_update_elem()
369 kvalue = (struct bpf_struct_ops_value *)&st_map->kvalue; in bpf_struct_ops_map_update_elem()
371 mutex_lock(&st_map->lock); in bpf_struct_ops_map_update_elem()
382 image = st_map->image; in bpf_struct_ops_map_update_elem()
383 image_end = st_map->image + PAGE_SIZE; in bpf_struct_ops_map_update_elem()
441 st_map->progs[i] = prog; in bpf_struct_ops_map_update_elem()
466 set_memory_ro((long)st_map->image, 1); in bpf_struct_ops_map_update_elem()
467 set_memory_x((long)st_map->image, 1); in bpf_struct_ops_map_update_elem()
484 set_memory_nx((long)st_map->image, 1); in bpf_struct_ops_map_update_elem()
485 set_memory_rw((long)st_map->image, 1); in bpf_struct_ops_map_update_elem()
489 bpf_struct_ops_map_put_progs(st_map); in bpf_struct_ops_map_update_elem()
494 mutex_unlock(&st_map->lock); in bpf_struct_ops_map_update_elem()
501 struct bpf_struct_ops_map *st_map; in bpf_struct_ops_map_delete_elem() local
503 st_map = (struct bpf_struct_ops_map *)map; in bpf_struct_ops_map_delete_elem()
504 prev_state = cmpxchg(&st_map->kvalue.state, in bpf_struct_ops_map_delete_elem()
509 st_map->st_ops->unreg(&st_map->kvalue.data); in bpf_struct_ops_map_delete_elem()
510 if (refcount_dec_and_test(&st_map->kvalue.refcnt)) in bpf_struct_ops_map_delete_elem()
546 struct bpf_struct_ops_map *st_map = (struct bpf_struct_ops_map *)map; in bpf_struct_ops_map_free() local
548 if (st_map->progs) in bpf_struct_ops_map_free()
549 bpf_struct_ops_map_put_progs(st_map); in bpf_struct_ops_map_free()
550 bpf_map_area_free(st_map->progs); in bpf_struct_ops_map_free()
551 bpf_jit_free_exec(st_map->image); in bpf_struct_ops_map_free()
552 bpf_map_area_free(st_map->uvalue); in bpf_struct_ops_map_free()
553 bpf_map_area_free(st_map); in bpf_struct_ops_map_free()
568 struct bpf_struct_ops_map *st_map; in bpf_struct_ops_map_alloc() local
585 st_map_size = sizeof(*st_map) + in bpf_struct_ops_map_alloc()
591 st_map = bpf_map_area_alloc(st_map_size, NUMA_NO_NODE); in bpf_struct_ops_map_alloc()
592 if (!st_map) in bpf_struct_ops_map_alloc()
595 st_map->st_ops = st_ops; in bpf_struct_ops_map_alloc()
596 map = &st_map->map; in bpf_struct_ops_map_alloc()
598 st_map->uvalue = bpf_map_area_alloc(vt->size, NUMA_NO_NODE); in bpf_struct_ops_map_alloc()
599 st_map->progs = in bpf_struct_ops_map_alloc()
602 st_map->image = bpf_jit_alloc_exec(PAGE_SIZE); in bpf_struct_ops_map_alloc()
603 if (!st_map->uvalue || !st_map->progs || !st_map->image) { in bpf_struct_ops_map_alloc()
608 mutex_init(&st_map->lock); in bpf_struct_ops_map_alloc()
609 set_vm_flush_reset_perms(st_map->image); in bpf_struct_ops_map_alloc()
643 struct bpf_struct_ops_map *st_map; in bpf_struct_ops_put_rcu() local
645 st_map = container_of(head, struct bpf_struct_ops_map, rcu); in bpf_struct_ops_put_rcu()
646 bpf_map_put(&st_map->map); in bpf_struct_ops_put_rcu()
655 struct bpf_struct_ops_map *st_map; in bpf_struct_ops_put() local
657 st_map = container_of(kvalue, struct bpf_struct_ops_map, in bpf_struct_ops_put()
670 call_rcu(&st_map->rcu, bpf_struct_ops_put_rcu); in bpf_struct_ops_put()