Message ID | 20210514195534.1440970-1-andrii@kernel.org |
---|---|
State | New |
Headers | show |
Series | [bpf-next] libbpf: reject static entry-point BPF programs | expand |
On Fri, May 14, 2021 at 4:14 PM Alexei Starovoitov <alexei.starovoitov@gmail.com> wrote: > > On Fri, May 14, 2021 at 1:34 PM Andrii Nakryiko <andrii@kernel.org> wrote: > > > > Detect use of static entry-point BPF programs (those with SEC() markings) and > > emit error message. > > Applied. I was wondering whether you've seen such combinations ? Haven't seen this anywhere in the real code, only tested locally by adding static to one of selftests. Unlikely to break anyone, but good to be as strict as with maps.
diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c index 182bd3d3f728..e58f51b24574 100644 --- a/tools/lib/bpf/libbpf.c +++ b/tools/lib/bpf/libbpf.c @@ -677,6 +677,11 @@ bpf_object__add_programs(struct bpf_object *obj, Elf_Data *sec_data, return -LIBBPF_ERRNO__FORMAT; } + if (sec_idx != obj->efile.text_shndx && GELF_ST_BIND(sym.st_info) == STB_LOCAL) { + pr_warn("sec '%s': program '%s' is static and not supported\n", sec_name, name); + return -ENOTSUP; + } + pr_debug("sec '%s': found program '%s' at insn offset %zu (%zu bytes), code size %zu insns (%zu bytes)\n", sec_name, name, sec_off / BPF_INSN_SZ, sec_off, prog_sz / BPF_INSN_SZ, prog_sz);
Detect use of static entry-point BPF programs (those with SEC() markings) and emit error message. This is similar to c1cccec9c636 ("libbpf: Reject static maps") but for BPF programs. Signed-off-by: Andrii Nakryiko <andrii@kernel.org> --- tools/lib/bpf/libbpf.c | 5 +++++ 1 file changed, 5 insertions(+)