Lines Matching refs:attr
25 static struct bpf_map *find_and_alloc_map(union bpf_attr *attr) in find_and_alloc_map() argument
31 if (tl->type == attr->map_type) { in find_and_alloc_map()
32 map = tl->ops->map_alloc(attr); in find_and_alloc_map()
36 map->map_type = attr->map_type; in find_and_alloc_map()
128 memchr_inv((void *) &attr->CMD##_LAST_FIELD + \
129 sizeof(attr->CMD##_LAST_FIELD), 0, \
130 sizeof(*attr) - \
132 sizeof(attr->CMD##_LAST_FIELD)) != NULL
136 static int map_create(union bpf_attr *attr) in map_create() argument
146 map = find_and_alloc_map(attr); in map_create()
222 static int map_lookup_elem(union bpf_attr *attr) in map_lookup_elem() argument
224 void __user *ukey = u64_to_ptr(attr->key); in map_lookup_elem()
225 void __user *uvalue = u64_to_ptr(attr->value); in map_lookup_elem()
226 int ufd = attr->map_fd; in map_lookup_elem()
281 static int map_update_elem(union bpf_attr *attr) in map_update_elem() argument
283 void __user *ukey = u64_to_ptr(attr->key); in map_update_elem()
284 void __user *uvalue = u64_to_ptr(attr->value); in map_update_elem()
285 int ufd = attr->map_fd; in map_update_elem()
321 err = map->ops->map_update_elem(map, key, value, attr->flags); in map_update_elem()
335 static int map_delete_elem(union bpf_attr *attr) in map_delete_elem() argument
337 void __user *ukey = u64_to_ptr(attr->key); in map_delete_elem()
338 int ufd = attr->map_fd; in map_delete_elem()
375 static int map_get_next_key(union bpf_attr *attr) in map_get_next_key() argument
377 void __user *ukey = u64_to_ptr(attr->key); in map_get_next_key()
378 void __user *unext_key = u64_to_ptr(attr->next_key); in map_get_next_key()
379 int ufd = attr->map_fd; in map_get_next_key()
621 static int bpf_prog_load(union bpf_attr *attr) in bpf_prog_load() argument
623 enum bpf_prog_type type = attr->prog_type; in bpf_prog_load()
633 if (strncpy_from_user(license, u64_to_ptr(attr->license), in bpf_prog_load()
641 if (attr->insn_cnt >= BPF_MAXINSNS) in bpf_prog_load()
645 attr->kern_version != LINUX_VERSION_CODE) in bpf_prog_load()
652 prog = bpf_prog_alloc(bpf_prog_size(attr->insn_cnt), GFP_USER); in bpf_prog_load()
660 prog->len = attr->insn_cnt; in bpf_prog_load()
663 if (copy_from_user(prog->insns, u64_to_ptr(attr->insns), in bpf_prog_load()
679 err = bpf_check(&prog, attr); in bpf_prog_load()
709 static int bpf_obj_pin(const union bpf_attr *attr) in bpf_obj_pin() argument
714 return bpf_obj_pin_user(attr->bpf_fd, u64_to_ptr(attr->pathname)); in bpf_obj_pin()
717 static int bpf_obj_get(const union bpf_attr *attr) in bpf_obj_get() argument
719 if (CHECK_ATTR(BPF_OBJ) || attr->bpf_fd != 0) in bpf_obj_get()
722 return bpf_obj_get_user(u64_to_ptr(attr->pathname)); in bpf_obj_get()
727 union bpf_attr attr = {}; in SYSCALL_DEFINE3() local
744 if (size > sizeof(attr)) { in SYSCALL_DEFINE3()
749 addr = (void __user *)uattr + sizeof(attr); in SYSCALL_DEFINE3()
759 size = sizeof(attr); in SYSCALL_DEFINE3()
763 if (copy_from_user(&attr, uattr, size) != 0) in SYSCALL_DEFINE3()
768 err = map_create(&attr); in SYSCALL_DEFINE3()
771 err = map_lookup_elem(&attr); in SYSCALL_DEFINE3()
774 err = map_update_elem(&attr); in SYSCALL_DEFINE3()
777 err = map_delete_elem(&attr); in SYSCALL_DEFINE3()
780 err = map_get_next_key(&attr); in SYSCALL_DEFINE3()
783 err = bpf_prog_load(&attr); in SYSCALL_DEFINE3()
786 err = bpf_obj_pin(&attr); in SYSCALL_DEFINE3()
789 err = bpf_obj_get(&attr); in SYSCALL_DEFINE3()