| From 9cc1df8cad8528b476ab1dac0a1289ab0fcb1848 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Thu, 24 Apr 2025 18:14:57 -0400 |
| Subject: Use thread-safe function pointer in libbpf_print |
| |
| 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.com |
| 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; |
| -- |
| 2.39.5 |
| |