Commit dafe58fc authored by Jiri Olsa's avatar Jiri Olsa Committed by Alexei Starovoitov

bpf: Remove recursion call in btf_struct_access

Andrii suggested we can simply jump to again label
instead of making recursion call.
Suggested-by: default avatarAndrii Nakryiko <andriin@fb.com>
Signed-off-by: default avatarJiri Olsa <jolsa@kernel.org>
Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
Acked-by: default avatarAndrii Nakryiko <andriin@fb.com>
Link: https://lore.kernel.org/bpf/20200825192124.710397-7-jolsa@kernel.org
parent 887c31a3
...@@ -3931,14 +3931,13 @@ int btf_struct_access(struct bpf_verifier_log *log, ...@@ -3931,14 +3931,13 @@ int btf_struct_access(struct bpf_verifier_log *log,
/* Only allow structure for now, can be relaxed for /* Only allow structure for now, can be relaxed for
* other types later. * other types later.
*/ */
elem_type = btf_type_skip_modifiers(btf_vmlinux, t = btf_type_skip_modifiers(btf_vmlinux, array_elem->type,
array_elem->type, NULL); NULL);
if (!btf_type_is_struct(elem_type)) if (!btf_type_is_struct(t))
goto error; goto error;
off = (off - moff) % elem_type->size; off = (off - moff) % t->size;
return btf_struct_access(log, elem_type, off, size, atype, goto again;
next_btf_id);
error: error:
bpf_log(log, "access beyond struct %s at off %u size %u\n", bpf_log(log, "access beyond struct %s at off %u size %u\n",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment