]> git.ipfire.org Git - thirdparty/iproute2.git/commitdiff
lib/bpf: Fix btf_load error lead to enable debug log
authorFeng Zhou <zhoufeng.zf@bytedance.com>
Sun, 1 Aug 2021 06:07:09 +0000 (14:07 +0800)
committerStephen Hemminger <stephen@networkplumber.org>
Wed, 11 Aug 2021 02:53:54 +0000 (19:53 -0700)
Use tc with no verbose, when bpf_btf_attach fail,
the conditions:
"if (fd < 0 && (errno == ENOSPC || !ctx->log_size))"
will make ctx->log_size != 0. And then, bpf_prog_attach,
ctx->log_size != 0. so enable debug log.
The verifier log sometimes is so chatty on larger programs.
bpf_prog_attach is failed.
"Log buffer too small to dump verifier log 16777215 bytes (9 tries)!"

BTF load failure does not affect prog load. prog still work.
So when BTF/PROG load fail, enlarge log_size and re-fail with
having verbose.

Signed-off-by: Feng Zhou <zhoufeng.zf@bytedance.com>
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
lib/bpf_legacy.c

index d57d2635932d06a2928f9b9659a1f818ff1d565c..e8a41e6fbd17d42b73874b19504ff794ff0ad241 100644 (file)
@@ -1531,7 +1531,7 @@ retry:
                 * into our buffer. Still, try to give a debuggable error
                 * log for the user, so enlarge it and re-fail.
                 */
-               if (fd < 0 && (errno == ENOSPC || !ctx->log_size)) {
+               if (fd < 0 && errno == ENOSPC) {
                        if (tries++ < 10 && !bpf_log_realloc(ctx))
                                goto retry;
 
@@ -2069,7 +2069,7 @@ retry:
        fd = bpf_btf_load(ctx->btf_data->d_buf, ctx->btf_data->d_size,
                          ctx->log, ctx->log_size);
        if (fd < 0 || ctx->verbose) {
-               if (fd < 0 && (errno == ENOSPC || !ctx->log_size)) {
+               if (fd < 0 && errno == ENOSPC) {
                        if (tries++ < 10 && !bpf_log_realloc(ctx))
                                goto retry;