diff options
Diffstat (limited to 'kernel/bpf/syscall.c')
| -rw-r--r-- | kernel/bpf/syscall.c | 14 | 
1 files changed, 9 insertions, 5 deletions
diff --git a/kernel/bpf/syscall.c b/kernel/bpf/syscall.c index a1b14d197a4f..35bac8e8b071 100644 --- a/kernel/bpf/syscall.c +++ b/kernel/bpf/syscall.c @@ -72,7 +72,7 @@ static int bpf_map_release(struct inode *inode, struct file *filp)  		/* prog_array stores refcnt-ed bpf_prog pointers  		 * release them all when user space closes prog_array_fd  		 */ -		bpf_prog_array_map_clear(map); +		bpf_fd_array_map_clear(map);  	bpf_map_put(map);  	return 0; @@ -155,14 +155,15 @@ static int map_lookup_elem(union bpf_attr *attr)  	void __user *ukey = u64_to_ptr(attr->key);  	void __user *uvalue = u64_to_ptr(attr->value);  	int ufd = attr->map_fd; -	struct fd f = fdget(ufd);  	struct bpf_map *map;  	void *key, *value, *ptr; +	struct fd f;  	int err;  	if (CHECK_ATTR(BPF_MAP_LOOKUP_ELEM))  		return -EINVAL; +	f = fdget(ufd);  	map = bpf_map_get(f);  	if (IS_ERR(map))  		return PTR_ERR(map); @@ -213,14 +214,15 @@ static int map_update_elem(union bpf_attr *attr)  	void __user *ukey = u64_to_ptr(attr->key);  	void __user *uvalue = u64_to_ptr(attr->value);  	int ufd = attr->map_fd; -	struct fd f = fdget(ufd);  	struct bpf_map *map;  	void *key, *value; +	struct fd f;  	int err;  	if (CHECK_ATTR(BPF_MAP_UPDATE_ELEM))  		return -EINVAL; +	f = fdget(ufd);  	map = bpf_map_get(f);  	if (IS_ERR(map))  		return PTR_ERR(map); @@ -265,14 +267,15 @@ static int map_delete_elem(union bpf_attr *attr)  {  	void __user *ukey = u64_to_ptr(attr->key);  	int ufd = attr->map_fd; -	struct fd f = fdget(ufd);  	struct bpf_map *map; +	struct fd f;  	void *key;  	int err;  	if (CHECK_ATTR(BPF_MAP_DELETE_ELEM))  		return -EINVAL; +	f = fdget(ufd);  	map = bpf_map_get(f);  	if (IS_ERR(map))  		return PTR_ERR(map); @@ -305,14 +308,15 @@ static int map_get_next_key(union bpf_attr *attr)  	void __user *ukey = u64_to_ptr(attr->key);  	void __user *unext_key = u64_to_ptr(attr->next_key);  	int ufd = attr->map_fd; -	struct fd f = fdget(ufd);  	struct bpf_map *map;  	void *key, *next_key; +	struct fd f;  	int err;  	if (CHECK_ATTR(BPF_MAP_GET_NEXT_KEY))  		return -EINVAL; +	f = fdget(ufd);  	map = bpf_map_get(f);  	if (IS_ERR(map))  		return PTR_ERR(map);  |