6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jonathan Wiepert jonathan.wiepert@gmail.com
[ Upstream commit 91dbac4076537b464639953c055c460d2bdfc7ea ]
This patch fixes a thread safety bug where libbpf_print uses the global variable storing the print function pointer rather than the local variable that had the print function set via __atomic_load_n.
Fixes: f1cb927cdb62 ("libbpf: Ensure print callback usage is thread-safe") Signed-off-by: Jonathan Wiepert jonathan.wiepert@gmail.com Signed-off-by: Andrii Nakryiko andrii@kernel.org Acked-by: Mykyta Yatsenko mykyta.yatsenko5@gmail.com Link: https://lore.kernel.org/bpf/20250424221457.793068-1-jonathan.wiepert@gmail.c... Signed-off-by: Sasha Levin sashal@kernel.org --- tools/lib/bpf/libbpf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c index 18e96375dc319..5dc2e55553358 100644 --- a/tools/lib/bpf/libbpf.c +++ b/tools/lib/bpf/libbpf.c @@ -246,7 +246,7 @@ void libbpf_print(enum libbpf_print_level level, const char *format, ...) old_errno = errno;
va_start(args, format); - __libbpf_pr(level, format, args); + print_fn(level, format, args); va_end(args);
errno = old_errno;