diff options
author | Dave Marchevsky <davemarchevsky@fb.com> | 2023-10-31 14:56:25 -0700 |
---|---|---|
committer | Alexei Starovoitov <ast@kernel.org> | 2023-11-01 22:33:53 -0700 |
commit | 15fb6f2b6c4c3c129adc2412ae12ec15e60a6adb (patch) | |
tree | 03f6aca296ff77a4608cbb68663a7415b72f29b1 /net | |
parent | 391145ba2accc48b596f3d438af1a6255b62a555 (diff) | |
download | linux-stable-15fb6f2b6c4c3c129adc2412ae12ec15e60a6adb.tar.gz linux-stable-15fb6f2b6c4c3c129adc2412ae12ec15e60a6adb.tar.bz2 linux-stable-15fb6f2b6c4c3c129adc2412ae12ec15e60a6adb.zip |
bpf: Add __bpf_hook_{start,end} macros
Not all uses of __diag_ignore_all(...) in BPF-related code in order to
suppress warnings are wrapping kfunc definitions. Some "hook point"
definitions - small functions meant to be used as attach points for
fentry and similar BPF progs - need to suppress -Wmissing-declarations.
We could use __bpf_kfunc_{start,end}_defs added in the previous patch in
such cases, but this might be confusing to someone unfamiliar with BPF
internals. Instead, this patch adds __bpf_hook_{start,end} macros,
currently having the same effect as __bpf_kfunc_{start,end}_defs, then
uses them to suppress warnings for two hook points in the kernel itself
and some bpf_testmod hook points as well.
Signed-off-by: Dave Marchevsky <davemarchevsky@fb.com>
Cc: Yafang Shao <laoar.shao@gmail.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Acked-by: Yafang Shao <laoar.shao@gmail.com>
Link: https://lore.kernel.org/r/20231031215625.2343848-2-davemarchevsky@fb.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Diffstat (limited to 'net')
-rw-r--r-- | net/socket.c | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/net/socket.c b/net/socket.c index 0d1c4e78fc7f..3379c64217a4 100644 --- a/net/socket.c +++ b/net/socket.c @@ -1685,20 +1685,16 @@ struct file *__sys_socket_file(int family, int type, int protocol) * Therefore, __weak is needed to ensure that the call is still * emitted, by telling the compiler that we don't know what the * function might eventually be. - * - * __diag_* below are needed to dismiss the missing prototype warning. */ -__diag_push(); -__diag_ignore_all("-Wmissing-prototypes", - "A fmod_ret entry point for BPF programs"); +__bpf_hook_start(); __weak noinline int update_socket_protocol(int family, int type, int protocol) { return protocol; } -__diag_pop(); +__bpf_hook_end(); int __sys_socket(int family, int type, int protocol) { |