From: Shung-Hsi Yu <shung-hsi.yu@suse.com>
To: stable@vger.kernel.org
Cc: Andrii Nakryiko <andrii@kernel.org>,
Alexei Starovoitov <ast@kernel.org>,
Daniel Borkmann <daniel@iogearbox.net>,
Hao Luo <haoluo@google.com>, Shung-Hsi Yu <shung-hsi.yu@suse.com>,
Eduard Zingerman <eddyz87@gmail.com>,
Hou Tao <houtao1@huawei.com>,
Cupertino Miranda <cupertino.miranda@oracle.com>
Subject: [PATCH stable 6.6 5/8] selftests/bpf: print correct offset for pseudo calls in disasm_insn()
Date: Tue, 26 Nov 2024 15:21:27 +0800 [thread overview]
Message-ID: <20241126072137.823699-6-shung-hsi.yu@suse.com> (raw)
In-Reply-To: <20241126072137.823699-1-shung-hsi.yu@suse.com>
From: Eduard Zingerman <eddyz87@gmail.com>
[ Upstream commit 203e6aba7692bca18fd97251b1354da0f5e2ba30 ]
Adjust disasm_helpers.c:disasm_insn() to account for the following
part of the verifier.c:jit_subprogs:
for (i = 0, insn = prog->insnsi; i < prog->len; i++, insn++) {
/* ... */
if (!bpf_pseudo_call(insn))
continue;
insn->off = env->insn_aux_data[i].call_imm;
subprog = find_subprog(env, i + insn->off + 1);
insn->imm = subprog;
}
Where verifier moves offset of the subprogram to the insn->off field.
Signed-off-by: Eduard Zingerman <eddyz87@gmail.com>
Link: https://lore.kernel.org/r/20240722233844.1406874-6-eddyz87@gmail.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Signed-off-by: Shung-Hsi Yu <shung-hsi.yu@suse.com>
---
tools/testing/selftests/bpf/disasm_helpers.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/tools/testing/selftests/bpf/disasm_helpers.c b/tools/testing/selftests/bpf/disasm_helpers.c
index 96b1f2ffe438..f529f1c8c171 100644
--- a/tools/testing/selftests/bpf/disasm_helpers.c
+++ b/tools/testing/selftests/bpf/disasm_helpers.c
@@ -4,6 +4,7 @@
#include "disasm.h"
struct print_insn_context {
+ char scratch[16];
char *buf;
size_t sz;
};
@@ -18,6 +19,22 @@ static void print_insn_cb(void *private_data, const char *fmt, ...)
va_end(args);
}
+static const char *print_call_cb(void *private_data, const struct bpf_insn *insn)
+{
+ struct print_insn_context *ctx = private_data;
+
+ /* For pseudo calls verifier.c:jit_subprogs() hides original
+ * imm to insn->off and changes insn->imm to be an index of
+ * the subprog instead.
+ */
+ if (insn->src_reg == BPF_PSEUDO_CALL) {
+ snprintf(ctx->scratch, sizeof(ctx->scratch), "%+d", insn->off);
+ return ctx->scratch;
+ }
+
+ return NULL;
+}
+
struct bpf_insn *disasm_insn(struct bpf_insn *insn, char *buf, size_t buf_sz)
{
struct print_insn_context ctx = {
@@ -26,6 +43,7 @@ struct bpf_insn *disasm_insn(struct bpf_insn *insn, char *buf, size_t buf_sz)
};
struct bpf_insn_cbs cbs = {
.cb_print = print_insn_cb,
+ .cb_call = print_call_cb,
.private_data = &ctx,
};
char *tmp, *pfx_end, *sfx_start;
--
2.47.0
next prev parent reply other threads:[~2024-11-26 7:22 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-26 7:21 [PATCH stable 6.6 0/8] Fix BPF selftests compilation error Shung-Hsi Yu
2024-11-26 7:21 ` [PATCH stable 6.6 1/8] selftests/bpf: Add netlink helper library Shung-Hsi Yu
2024-11-26 15:39 ` Sasha Levin
2024-11-26 7:21 ` [PATCH stable 6.6 2/8] selftests/bpf: Support checks against a regular expression Shung-Hsi Yu
2024-11-26 7:21 ` [PATCH stable 6.6 3/8] selftests/bpf: Factor out get_xlated_program() helper Shung-Hsi Yu
2024-11-26 7:21 ` [PATCH stable 6.6 4/8] selftests/bpf: extract utility function for BPF disassembly Shung-Hsi Yu
2024-11-26 7:21 ` Shung-Hsi Yu [this message]
2024-11-26 7:21 ` [PATCH stable 6.6 6/8] selftests/bpf: no need to track next_match_pos in struct test_loader Shung-Hsi Yu
2024-11-26 7:21 ` [PATCH stable 6.6 7/8] selftests/bpf: extract test_loader->expect_msgs as a data structure Shung-Hsi Yu
2024-11-26 7:21 ` [PATCH stable 6.6 8/8] selftests/bpf: allow checking xlated programs in verifier_* tests Shung-Hsi Yu
2024-11-27 16:20 ` [PATCH stable 6.6 0/8] Fix BPF selftests compilation error Sasha Levin
2024-12-17 6:11 ` Shung-Hsi Yu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20241126072137.823699-6-shung-hsi.yu@suse.com \
--to=shung-hsi.yu@suse.com \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=cupertino.miranda@oracle.com \
--cc=daniel@iogearbox.net \
--cc=eddyz87@gmail.com \
--cc=haoluo@google.com \
--cc=houtao1@huawei.com \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox