diff options
| -rw-r--r-- | kernel/bpf/verifier.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c index 098dd7f21c89..93716da57d48 100644 --- a/kernel/bpf/verifier.c +++ b/kernel/bpf/verifier.c @@ -17929,7 +17929,13 @@ static int copy_insn_array(struct bpf_map *map, u32 start, u32 end, u32 *items) for (i = start; i <= end; i++) { value = map->ops->map_lookup_elem(map, &i); - if (!value) + /* + * map_lookup_elem of an array map will never return an error, + * but not checking it makes some static analysers to worry + */ + if (IS_ERR(value)) + return PTR_ERR(value); + else if (!value) return -EINVAL; items[i - start] = value->xlated_off; } |
