libbpf: Append "..." in fixed up log if CO-RE spec is truncated
authorAndrii Nakryiko <andrii@kernel.org>
Thu, 28 Apr 2022 04:15:20 +0000 (21:15 -0700)
committerAlexei Starovoitov <ast@kernel.org>
Fri, 29 Apr 2022 03:03:29 +0000 (20:03 -0700)
Detect CO-RE spec truncation and append "..." to make user aware that
there was supposed to be more of the spec there.

Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/bpf/20220428041523.4089853-2-andrii@kernel.org
tools/lib/bpf/libbpf.c

index c9aa5b1278fc2a1e4d7443c1af656fb34bd1f85e..e4d2df8dffadfcf5cb493d78ce33346b1fb4379b 100644 (file)
@@ -6962,7 +6962,7 @@ static void fixup_log_failed_core_relo(struct bpf_program *prog,
        const struct bpf_core_relo *relo;
        struct bpf_core_spec spec;
        char patch[512], spec_buf[256];
-       int insn_idx, err;
+       int insn_idx, err, spec_len;
 
        if (sscanf(line1, "%d: (%*d) call unknown#195896080\n", &insn_idx) != 1)
                return;
@@ -6975,11 +6975,11 @@ static void fixup_log_failed_core_relo(struct bpf_program *prog,
        if (err)
                return;
 
-       bpf_core_format_spec(spec_buf, sizeof(spec_buf), &spec);
+       spec_len = bpf_core_format_spec(spec_buf, sizeof(spec_buf), &spec);
        snprintf(patch, sizeof(patch),
                 "%d: <invalid CO-RE relocation>\n"
-                "failed to resolve CO-RE relocation %s\n",
-                insn_idx, spec_buf);
+                "failed to resolve CO-RE relocation %s%s\n",
+                insn_idx, spec_buf, spec_len >= sizeof(spec_buf) ? "..." : "");
 
        patch_log(buf, buf_sz, log_sz, line1, line3 - line1, patch);
 }