2020-07-18 11:54:06

by Wang Hai

[permalink] [raw]
Subject: [PATCH -next] bpf: Make some functions static

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 <[email protected]>
Signed-off-by: Wang Hai <[email protected]>
---
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;
}

-int noinline bpf_fentry_test4(void *a, char b, int c, u64 d)
+static noinline int bpf_fentry_test4(void *a, char b, int c, u64 d)
{
return (long)a + b + c + d;
}

-int noinline bpf_fentry_test5(u64 a, void *b, short c, int d, u64 e)
+static noinline int bpf_fentry_test5(u64 a, void *b, short c, int d, u64 e)
{
return a + (long)b + c + d + e;
}

-int noinline bpf_fentry_test6(u64 a, void *b, short c, int d, void *e, u64 f)
+static noinline int bpf_fentry_test6(u64 a, void *b, short c, int d, void *e, u64 f)
{
return a + (long)b + c + d + (long)e + f;
}
@@ -151,17 +151,17 @@ struct bpf_fentry_test_t {
struct bpf_fentry_test_t *a;
};

-int noinline bpf_fentry_test7(struct bpf_fentry_test_t *arg)
+static noinline int bpf_fentry_test7(struct bpf_fentry_test_t *arg)
{
return (long)arg;
}

-int noinline bpf_fentry_test8(struct bpf_fentry_test_t *arg)
+static noinline int bpf_fentry_test8(struct bpf_fentry_test_t *arg)
{
return (long)arg->a;
}

-int noinline bpf_modify_return_test(int a, int *b)
+static noinline int bpf_modify_return_test(int a, int *b)
{
*b += 1;
return a + *b;
--
2.17.1


2020-07-20 16:23:43

by Yonghong Song

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



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 <[email protected]>
> Signed-off-by: Wang Hai <[email protected]>

Please see commit:

commit e9ff9d52540a53ce8c9eff5bf8b66467fe81eb2b
Author: Jean-Philippe Menil <[email protected]>
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;
> }
>
[...]