Lines Matching refs:attr
23 static struct bpf_map *find_and_alloc_map(union bpf_attr *attr) in find_and_alloc_map() argument
29 if (tl->type == attr->map_type) { in find_and_alloc_map()
30 map = tl->ops->map_alloc(attr); in find_and_alloc_map()
34 map->map_type = attr->map_type; in find_and_alloc_map()
81 memchr_inv((void *) &attr->CMD##_LAST_FIELD + \
82 sizeof(attr->CMD##_LAST_FIELD), 0, \
83 sizeof(*attr) - \
85 sizeof(attr->CMD##_LAST_FIELD)) != NULL
89 static int map_create(union bpf_attr *attr) in map_create() argument
99 map = find_and_alloc_map(attr); in map_create()
147 static int map_lookup_elem(union bpf_attr *attr) in map_lookup_elem() argument
149 void __user *ukey = u64_to_ptr(attr->key); in map_lookup_elem()
150 void __user *uvalue = u64_to_ptr(attr->value); in map_lookup_elem()
151 int ufd = attr->map_fd; in map_lookup_elem()
205 static int map_update_elem(union bpf_attr *attr) in map_update_elem() argument
207 void __user *ukey = u64_to_ptr(attr->key); in map_update_elem()
208 void __user *uvalue = u64_to_ptr(attr->value); in map_update_elem()
209 int ufd = attr->map_fd; in map_update_elem()
244 err = map->ops->map_update_elem(map, key, value, attr->flags); in map_update_elem()
258 static int map_delete_elem(union bpf_attr *attr) in map_delete_elem() argument
260 void __user *ukey = u64_to_ptr(attr->key); in map_delete_elem()
261 int ufd = attr->map_fd; in map_delete_elem()
297 static int map_get_next_key(union bpf_attr *attr) in map_get_next_key() argument
299 void __user *ukey = u64_to_ptr(attr->key); in map_get_next_key()
300 void __user *unext_key = u64_to_ptr(attr->next_key); in map_get_next_key()
301 int ufd = attr->map_fd; in map_get_next_key()
476 static int bpf_prog_load(union bpf_attr *attr) in bpf_prog_load() argument
478 enum bpf_prog_type type = attr->prog_type; in bpf_prog_load()
488 if (strncpy_from_user(license, u64_to_ptr(attr->license), in bpf_prog_load()
496 if (attr->insn_cnt >= BPF_MAXINSNS) in bpf_prog_load()
500 attr->kern_version != LINUX_VERSION_CODE) in bpf_prog_load()
504 prog = bpf_prog_alloc(bpf_prog_size(attr->insn_cnt), GFP_USER); in bpf_prog_load()
508 prog->len = attr->insn_cnt; in bpf_prog_load()
511 if (copy_from_user(prog->insns, u64_to_ptr(attr->insns), in bpf_prog_load()
527 err = bpf_check(&prog, attr); in bpf_prog_load()
553 union bpf_attr attr = {}; in SYSCALL_DEFINE3() local
574 if (size > sizeof(attr)) { in SYSCALL_DEFINE3()
579 addr = (void __user *)uattr + sizeof(attr); in SYSCALL_DEFINE3()
589 size = sizeof(attr); in SYSCALL_DEFINE3()
593 if (copy_from_user(&attr, uattr, size) != 0) in SYSCALL_DEFINE3()
598 err = map_create(&attr); in SYSCALL_DEFINE3()
601 err = map_lookup_elem(&attr); in SYSCALL_DEFINE3()
604 err = map_update_elem(&attr); in SYSCALL_DEFINE3()
607 err = map_delete_elem(&attr); in SYSCALL_DEFINE3()
610 err = map_get_next_key(&attr); in SYSCALL_DEFINE3()
613 err = bpf_prog_load(&attr); in SYSCALL_DEFINE3()