diff options
author | Feng Zhou <zhoufeng.zf@bytedance.com> | 2023-04-20 05:27:34 +0200 |
---|---|---|
committer | Alexei Starovoitov <ast@kernel.org> | 2023-04-20 06:29:39 +0200 |
commit | 2569c7b8726fc06d946a4f999fb1be15b68f3f3c (patch) | |
tree | 527655701fd522478922029e1af75d45352df4c0 /kernel/bpf | |
parent | selftests/xsk: Fix munmap for hugepage allocated umem (diff) | |
download | linux-2569c7b8726fc06d946a4f999fb1be15b68f3f3c.tar.xz linux-2569c7b8726fc06d946a4f999fb1be15b68f3f3c.zip |
bpf: support access variable length array of integer type
After this commit:
bpf: Support variable length array in tracing programs (9c5f8a1008a1)
Trace programs can access variable length array, but for structure
type. This patch adds support for integer type.
Example:
Hook load_balance
struct sched_domain {
...
unsigned long span[];
}
The access: sd->span[0].
Co-developed-by: Chengming Zhou <zhouchengming@bytedance.com>
Signed-off-by: Chengming Zhou <zhouchengming@bytedance.com>
Signed-off-by: Feng Zhou <zhoufeng.zf@bytedance.com>
Link: https://lore.kernel.org/r/20230420032735.27760-2-zhoufeng.zf@bytedance.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Diffstat (limited to 'kernel/bpf')
-rw-r--r-- | kernel/bpf/btf.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/kernel/bpf/btf.c b/kernel/bpf/btf.c index 027f9f8a3551..a0887ee44e89 100644 --- a/kernel/bpf/btf.c +++ b/kernel/bpf/btf.c @@ -6157,11 +6157,13 @@ again: if (off < moff) goto error; - /* Only allow structure for now, can be relaxed for - * other types later. - */ + /* allow structure and integer */ t = btf_type_skip_modifiers(btf, array_elem->type, NULL); + + if (btf_type_is_int(t)) + return WALK_SCALAR; + if (!btf_type_is_struct(t)) goto error; |