Use thread-safe function pointer in libbpf_print

[ 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: f1cb927cdb ("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.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
Jonathan Wiepert
2025-04-24 18:14:57 -04:00
committed by Greg Kroah-Hartman
parent 79669facfe
commit cb4b936946

View File

@@ -246,7 +246,7 @@ void libbpf_print(enum libbpf_print_level level, const char *format, ...)
old_errno = errno; old_errno = errno;
va_start(args, format); va_start(args, format);
__libbpf_pr(level, format, args); print_fn(level, format, args);
va_end(args); va_end(args);
errno = old_errno; errno = old_errno;