diff options
Diffstat (limited to 'kernel/bpf/local_storage.c')
-rw-r--r-- | kernel/bpf/local_storage.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/kernel/bpf/local_storage.c b/kernel/bpf/local_storage.c index 22ad967d1e5f..830d7f095748 100644 --- a/kernel/bpf/local_storage.c +++ b/kernel/bpf/local_storage.c | |||
@@ -129,7 +129,7 @@ static int cgroup_storage_update_elem(struct bpf_map *map, void *_key, | |||
129 | struct bpf_cgroup_storage *storage; | 129 | struct bpf_cgroup_storage *storage; |
130 | struct bpf_storage_buffer *new; | 130 | struct bpf_storage_buffer *new; |
131 | 131 | ||
132 | if (flags & BPF_NOEXIST) | 132 | if (flags != BPF_ANY && flags != BPF_EXIST) |
133 | return -EINVAL; | 133 | return -EINVAL; |
134 | 134 | ||
135 | storage = cgroup_storage_lookup((struct bpf_cgroup_storage_map *)map, | 135 | storage = cgroup_storage_lookup((struct bpf_cgroup_storage_map *)map, |
@@ -195,6 +195,9 @@ static struct bpf_map *cgroup_storage_map_alloc(union bpf_attr *attr) | |||
195 | if (attr->key_size != sizeof(struct bpf_cgroup_storage_key)) | 195 | if (attr->key_size != sizeof(struct bpf_cgroup_storage_key)) |
196 | return ERR_PTR(-EINVAL); | 196 | return ERR_PTR(-EINVAL); |
197 | 197 | ||
198 | if (attr->value_size == 0) | ||
199 | return ERR_PTR(-EINVAL); | ||
200 | |||
198 | if (attr->value_size > PAGE_SIZE) | 201 | if (attr->value_size > PAGE_SIZE) |
199 | return ERR_PTR(-E2BIG); | 202 | return ERR_PTR(-E2BIG); |
200 | 203 | ||