* [PATCH bpf] bpf: Limit static tcp-cc functions in the .BTF_ids list to x86
@ 2021-05-08 0:50 Martin KaFai Lau
2021-05-11 21:30 ` patchwork-bot+netdevbpf
0 siblings, 1 reply; 2+ messages in thread
From: Martin KaFai Lau @ 2021-05-08 0:50 UTC (permalink / raw)
To: bpf
Cc: Alexei Starovoitov, Daniel Borkmann, kernel-team, netdev,
Michal Suchánek, Jiri Slaby, Jiri Olsa
During the discussion in [0]. It was pointed out that static functions
in ppc64 is prefixed with ".". For example, the 'readelf -s vmlinux.ppc':
89326: c000000001383280 24 NOTYPE LOCAL DEFAULT 31 cubictcp_init
89327: c000000000c97c50 168 FUNC LOCAL DEFAULT 2 .cubictcp_init
The one with FUNC type is ".cubictcp_init" instead of "cubictcp_init".
The "." seems to be done by arch/powerpc/include/asm/ppc_asm.h.
This caused the pahole cannot generate the BTF for these tcp-cc kernel
functions because pahole only captures the FUNC type and "cubictcp_init"
is not. It then failed the kernel compilation in ppc64.
This behavior is only reported in ppc64 so far. I tried arm64, s390,
and sparc64 and did not observe this "." prefix and NOTYPE behavior.
Since the kfunc call is only supported in the x86_64 and x86_32 jit,
this patch limits those tcp-cc functions to x86 only to avoid unnecessary
compilation issue in other ARCHs. In the future, we can examine
if it is better to change all those functions from static to
extern.
[0]: https://lore.kernel.org/bpf/4e051459-8532-7b61-c815-f3435767f8a0@kernel.org/
Fixes: e78aea8b2170 ("bpf: tcp: Put some tcp cong functions in allowlist for bpf-tcp-cc")
Cc: Michal Suchánek <msuchanek@suse.de>
Cc: Jiri Slaby <jslaby@suse.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Signed-off-by: Martin KaFai Lau <kafai@fb.com>
---
net/ipv4/bpf_tcp_ca.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/net/ipv4/bpf_tcp_ca.c b/net/ipv4/bpf_tcp_ca.c
index dff4f0eb96b0..9e41eff4a685 100644
--- a/net/ipv4/bpf_tcp_ca.c
+++ b/net/ipv4/bpf_tcp_ca.c
@@ -185,6 +185,7 @@ BTF_ID(func, tcp_reno_cong_avoid)
BTF_ID(func, tcp_reno_undo_cwnd)
BTF_ID(func, tcp_slow_start)
BTF_ID(func, tcp_cong_avoid_ai)
+#ifdef CONFIG_X86
#ifdef CONFIG_DYNAMIC_FTRACE
#if IS_BUILTIN(CONFIG_TCP_CONG_CUBIC)
BTF_ID(func, cubictcp_init)
@@ -213,6 +214,7 @@ BTF_ID(func, bbr_min_tso_segs)
BTF_ID(func, bbr_set_state)
#endif
#endif /* CONFIG_DYNAMIC_FTRACE */
+#endif /* CONFIG_X86 */
BTF_SET_END(bpf_tcp_ca_kfunc_ids)
static bool bpf_tcp_ca_check_kfunc_call(u32 kfunc_btf_id)
--
2.30.2
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH bpf] bpf: Limit static tcp-cc functions in the .BTF_ids list to x86
2021-05-08 0:50 [PATCH bpf] bpf: Limit static tcp-cc functions in the .BTF_ids list to x86 Martin KaFai Lau
@ 2021-05-11 21:30 ` patchwork-bot+netdevbpf
0 siblings, 0 replies; 2+ messages in thread
From: patchwork-bot+netdevbpf @ 2021-05-11 21:30 UTC (permalink / raw)
To: Martin KaFai Lau
Cc: bpf, ast, daniel, kernel-team, netdev, msuchanek, jslaby, jolsa
Hello:
This patch was applied to bpf/bpf.git (refs/heads/master):
On Fri, 7 May 2021 17:50:11 -0700 you wrote:
> During the discussion in [0]. It was pointed out that static functions
> in ppc64 is prefixed with ".". For example, the 'readelf -s vmlinux.ppc':
>
> 89326: c000000001383280 24 NOTYPE LOCAL DEFAULT 31 cubictcp_init
> 89327: c000000000c97c50 168 FUNC LOCAL DEFAULT 2 .cubictcp_init
>
> The one with FUNC type is ".cubictcp_init" instead of "cubictcp_init".
> The "." seems to be done by arch/powerpc/include/asm/ppc_asm.h.
>
> [...]
Here is the summary with links:
- [bpf] bpf: Limit static tcp-cc functions in the .BTF_ids list to x86
https://git.kernel.org/bpf/bpf/c/569c484f9995
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2021-05-11 21:30 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-08 0:50 [PATCH bpf] bpf: Limit static tcp-cc functions in the .BTF_ids list to x86 Martin KaFai Lau
2021-05-11 21:30 ` patchwork-bot+netdevbpf
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).