Skip to content

Commit

Permalink
bpf: Remove recursion call in btf_struct_access
Browse files Browse the repository at this point in the history
Andrii suggested we can simply jump to again label
instead of making recursion call.

Suggested-by: Andrii Nakryiko <andriin@fb.com>
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Acked-by: Andrii Nakryiko <andriin@fb.com>
Link: https://lore.kernel.org/bpf/20200825192124.710397-7-jolsa@kernel.org
  • Loading branch information
Jiri Olsa authored and Alexei Starovoitov committed Aug 25, 2020
1 parent 887c31a commit dafe58f
Showing 1 changed file with 5 additions and 6 deletions.
11 changes: 5 additions & 6 deletions kernel/bpf/btf.c
Original file line number Diff line number Diff line change
Expand Up @@ -3931,14 +3931,13 @@ int btf_struct_access(struct bpf_verifier_log *log,
/* Only allow structure for now, can be relaxed for
* other types later.
*/
elem_type = btf_type_skip_modifiers(btf_vmlinux,
array_elem->type, NULL);
if (!btf_type_is_struct(elem_type))
t = btf_type_skip_modifiers(btf_vmlinux, array_elem->type,
NULL);
if (!btf_type_is_struct(t))
goto error;

off = (off - moff) % elem_type->size;
return btf_struct_access(log, elem_type, off, size, atype,
next_btf_id);
off = (off - moff) % t->size;
goto again;

error:
bpf_log(log, "access beyond struct %s at off %u size %u\n",
Expand Down

0 comments on commit dafe58f

Please sign in to comment.