UPSTREAM: bpf: Remove recursion call in btf_struct_access

Andrii suggested we can simply jump to again label
instead of making recursion call.

Suggested-by: Andrii Nakryiko <andriin@fb.com>
Change-Id: I90aef4dd5f341e49d1390394d7c926a772698815
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
This commit is contained in:
Jiri Olsa 2020-08-25 21:21:16 +02:00 • committed by basamaryan
commit ef0a05e1db
No known key found for this signature in database
GPG key ID: 210D5384FB2A5885

View file

@ -3938,14 +3938,13 @@ again:
/* 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",