Lines Matching refs:st_map

244 	struct bpf_struct_ops_map *st_map = (struct bpf_struct_ops_map *)map;  in bpf_struct_ops_map_sys_lookup_elem()  local
251 kvalue = &st_map->kvalue; in bpf_struct_ops_map_sys_lookup_elem()
263 memcpy(uvalue, st_map->uvalue, map->value_size); in bpf_struct_ops_map_sys_lookup_elem()
275 static void bpf_struct_ops_map_put_progs(struct bpf_struct_ops_map *st_map) in bpf_struct_ops_map_put_progs() argument
277 const struct btf_type *t = st_map->st_ops->type; in bpf_struct_ops_map_put_progs()
281 if (st_map->progs[i]) { in bpf_struct_ops_map_put_progs()
282 bpf_prog_put(st_map->progs[i]); in bpf_struct_ops_map_put_progs()
283 st_map->progs[i] = NULL; in bpf_struct_ops_map_put_progs()
317 struct bpf_struct_ops_map *st_map = (struct bpf_struct_ops_map *)map; in bpf_struct_ops_map_update_elem() local
318 const struct bpf_struct_ops *st_ops = st_map->st_ops; in bpf_struct_ops_map_update_elem()
350 uvalue = (struct bpf_struct_ops_value *)st_map->uvalue; in bpf_struct_ops_map_update_elem()
351 kvalue = (struct bpf_struct_ops_value *)&st_map->kvalue; in bpf_struct_ops_map_update_elem()
353 mutex_lock(&st_map->lock); in bpf_struct_ops_map_update_elem()
364 image = st_map->image; in bpf_struct_ops_map_update_elem()
422 st_map->progs[i] = prog; in bpf_struct_ops_map_update_elem()
434 st_map->image + PAGE_SIZE, in bpf_struct_ops_map_update_elem()
450 set_memory_ro((long)st_map->image, 1); in bpf_struct_ops_map_update_elem()
451 set_memory_x((long)st_map->image, 1); in bpf_struct_ops_map_update_elem()
468 set_memory_nx((long)st_map->image, 1); in bpf_struct_ops_map_update_elem()
469 set_memory_rw((long)st_map->image, 1); in bpf_struct_ops_map_update_elem()
473 bpf_struct_ops_map_put_progs(st_map); in bpf_struct_ops_map_update_elem()
478 mutex_unlock(&st_map->lock); in bpf_struct_ops_map_update_elem()
485 struct bpf_struct_ops_map *st_map; in bpf_struct_ops_map_delete_elem() local
487 st_map = (struct bpf_struct_ops_map *)map; in bpf_struct_ops_map_delete_elem()
488 prev_state = cmpxchg(&st_map->kvalue.state, in bpf_struct_ops_map_delete_elem()
493 st_map->st_ops->unreg(&st_map->kvalue.data); in bpf_struct_ops_map_delete_elem()
494 if (refcount_dec_and_test(&st_map->kvalue.refcnt)) in bpf_struct_ops_map_delete_elem()
530 struct bpf_struct_ops_map *st_map = (struct bpf_struct_ops_map *)map; in bpf_struct_ops_map_free() local
532 if (st_map->progs) in bpf_struct_ops_map_free()
533 bpf_struct_ops_map_put_progs(st_map); in bpf_struct_ops_map_free()
534 bpf_map_area_free(st_map->progs); in bpf_struct_ops_map_free()
535 bpf_jit_free_exec(st_map->image); in bpf_struct_ops_map_free()
536 bpf_map_area_free(st_map->uvalue); in bpf_struct_ops_map_free()
537 bpf_map_area_free(st_map); in bpf_struct_ops_map_free()
552 struct bpf_struct_ops_map *st_map; in bpf_struct_ops_map_alloc() local
571 st_map_size = sizeof(*st_map) + in bpf_struct_ops_map_alloc()
585 st_map = bpf_map_area_alloc(st_map_size, NUMA_NO_NODE); in bpf_struct_ops_map_alloc()
586 if (!st_map) { in bpf_struct_ops_map_alloc()
590 st_map->st_ops = st_ops; in bpf_struct_ops_map_alloc()
591 map = &st_map->map; in bpf_struct_ops_map_alloc()
593 st_map->uvalue = bpf_map_area_alloc(vt->size, NUMA_NO_NODE); in bpf_struct_ops_map_alloc()
594 st_map->progs = in bpf_struct_ops_map_alloc()
597 st_map->image = bpf_jit_alloc_exec(PAGE_SIZE); in bpf_struct_ops_map_alloc()
598 if (!st_map->uvalue || !st_map->progs || !st_map->image) { in bpf_struct_ops_map_alloc()
604 mutex_init(&st_map->lock); in bpf_struct_ops_map_alloc()
605 set_vm_flush_reset_perms(st_map->image); in bpf_struct_ops_map_alloc()
644 struct bpf_struct_ops_map *st_map; in bpf_struct_ops_put() local
646 st_map = container_of(kvalue, struct bpf_struct_ops_map, in bpf_struct_ops_put()
648 bpf_map_put(&st_map->map); in bpf_struct_ops_put()