Re: [PATCH -next] bpf: Make some functions static

From: Yonghong Song
Date: Mon Jul 20 2020 - 12:18:51 EST




On 7/18/20 4:51 AM, Wang Hai wrote:
Fix sparse build warning:

net/bpf/test_run.c:120:14: warning:
symbol 'bpf_fentry_test1' was not declared. Should it be static?
net/bpf/test_run.c:125:14: warning:
symbol 'bpf_fentry_test2' was not declared. Should it be static?
net/bpf/test_run.c:130:14: warning:
symbol 'bpf_fentry_test3' was not declared. Should it be static?
net/bpf/test_run.c:135:14: warning:
symbol 'bpf_fentry_test4' was not declared. Should it be static?
net/bpf/test_run.c:140:14: warning:
symbol 'bpf_fentry_test5' was not declared. Should it be static?
net/bpf/test_run.c:145:14: warning:
symbol 'bpf_fentry_test6' was not declared. Should it be static?
net/bpf/test_run.c:154:14: warning:
symbol 'bpf_fentry_test7' was not declared. Should it be static?
net/bpf/test_run.c:159:14: warning:
symbol 'bpf_fentry_test8' was not declared. Should it be static?
net/bpf/test_run.c:164:14: warning:
symbol 'bpf_modify_return_test' was not declared. Should it be static?

Reported-by: Hulk Robot <hulkci@xxxxxxxxxx>
Signed-off-by: Wang Hai <wanghai38@xxxxxxxxxx>

Please see commit:

commit e9ff9d52540a53ce8c9eff5bf8b66467fe81eb2b
Author: Jean-Philippe Menil <jpmenil@xxxxxxxxx>
Date: Fri Mar 27 21:47:13 2020 +0100

bpf: Fix build warning regarding missing prototypes

Fix build warnings when building net/bpf/test_run.o with W=1 due
to missing prototype for bpf_fentry_test{1..6}.

Instead of declaring prototypes, turn off warnings with
__diag_{push,ignore,pop} as pointed out by Alexei.

You probably use an old compiler (gcc < 8) which is why
the warning is emitted.

---
net/bpf/test_run.c | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/net/bpf/test_run.c b/net/bpf/test_run.c
index b03c469cd01f..0d78bd9b6c9d 100644
--- a/net/bpf/test_run.c
+++ b/net/bpf/test_run.c
@@ -117,32 +117,32 @@ static int bpf_test_finish(const union bpf_attr *kattr,
__diag_push();
__diag_ignore(GCC, 8, "-Wmissing-prototypes",
"Global functions as their definitions will be in vmlinux BTF");
-int noinline bpf_fentry_test1(int a)
+static noinline int bpf_fentry_test1(int a)
{
return a + 1;
}
-int noinline bpf_fentry_test2(int a, u64 b)
+static noinline int bpf_fentry_test2(int a, u64 b)
{
return a + b;
}
-int noinline bpf_fentry_test3(char a, int b, u64 c)
+static noinline int bpf_fentry_test3(char a, int b, u64 c)
{
return a + b + c;
}
[...]