BPF List
 help / color / mirror / Atom feed
* [PATCH bpf 1/2] libbpf: Fix stale raw data after btf__relocate()
@ 2026-11-01 15:56 Jiayuan Chen
  2026-11-01 15:56 ` [PATCH bpf 2/2] selftests/bpf: Add test for btf__raw_data() " Jiayuan Chen
  2026-11-01 18:02 ` [PATCH bpf 1/2] libbpf: Fix stale raw data " Alexei Starovoitov
  0 siblings, 2 replies; 3+ messages in thread
From: Jiayuan Chen @ 2026-11-01 15:56 UTC (permalink / raw)
  To: bpf
  Cc: Jiayuan Chen, 洛, Alexei Starovoitov, Daniel Borkmann,
	Andrii Nakryiko, Eduard Zingerman, Kumar Kartikeya Dwivedi,
	Martin KaFai Lau, Song Liu, Yonghong Song, Jiri Olsa,
	Emil Tsalapatis, Ihor Solodrai, Shuah Khan, Alan Maguire,
	linux-kernel, linux-kselftest

btf_relocate() rewrites type ids in place but doesn't drop the cached
raw_data, so btf__raw_data() after btf__relocate() returns the old
bytes with pre-relocation ids.

Call btf_ensure_modifiable() first, like other BTF mutators do, so the
cache is invalidated.

Fixes: 19e00c897d50 ("libbpf: Split BTF relocation")
Reported-by: 洛 <wanghai8081@gmail.com>
Closes: https://lore.kernel.org/bpf/455f7257-25b9-4070-8313-42af8005b948@linux.dev/T/#t
Signed-off-by: Jiayuan Chen <jiayuan.chen@linux.dev>
---
 tools/lib/bpf/btf.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/tools/lib/bpf/btf.c b/tools/lib/bpf/btf.c
index d2ff6f5d6d5b..b55dce9fa003 100644
--- a/tools/lib/bpf/btf.c
+++ b/tools/lib/bpf/btf.c
@@ -6640,8 +6640,13 @@ void btf_set_base_btf(struct btf *btf, const struct btf *base_btf)
 
 int btf__relocate(struct btf *btf, const struct btf *base_btf)
 {
-	int err = btf_relocate(btf, base_btf, NULL, NULL);
+	int err;
+
+	err = btf_ensure_modifiable(btf);
+	if (err)
+		return libbpf_err(err);
 
+	err = btf_relocate(btf, base_btf, NULL, NULL);
 	if (!err)
 		btf->owns_base = false;
 	return libbpf_err(err);
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2026-11-01 18:02 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-11-01 15:56 [PATCH bpf 1/2] libbpf: Fix stale raw data after btf__relocate() Jiayuan Chen
2026-11-01 15:56 ` [PATCH bpf 2/2] selftests/bpf: Add test for btf__raw_data() " Jiayuan Chen
2026-11-01 18:02 ` [PATCH bpf 1/2] libbpf: Fix stale raw data " Alexei Starovoitov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox