There are a number of structs in net/core/filter.c
that are not exported or declared outside of the
file. Fix the following warnings by making these
all static:
net/core/filter.c:8465:31: warning: symbol 'sk_filter_verifier_ops' was not declared. Should it be static?
net/core/filter.c:8472:27: warning: symbol 'sk_filter_prog_ops' was not declared. Should it be static?
net/core/filter.c:8476:31: warning: symbol 'tc_cls_act_verifier_ops' was not declared. Should it be static?
net/core/filter.c:8484:27: warning: symbol 'tc_cls_act_prog_ops' was not declared. Should it be static?
net/core/filter.c:8488:31: warning: symbol 'xdp_verifier_ops' was not declared. Should it be static?
net/core/filter.c:8495:27: warning: symbol 'xdp_prog_ops' was not declared. Should it be static?
net/core/filter.c:8499:31: warning: symbol 'cg_skb_verifier_ops' was not declared. Should it be static?
net/core/filter.c:8505:27: warning: symbol 'cg_skb_prog_ops' was not declared. Should it be static?
net/core/filter.c:8509:31: warning: symbol 'lwt_in_verifier_ops' was not declared. Should it be static?
net/core/filter.c:8515:27: warning: symbol 'lwt_in_prog_ops' was not declared. Should it be static?
net/core/filter.c:8519:31: warning: symbol 'lwt_out_verifier_ops' was not declared. Should it be static?
net/core/filter.c:8525:27: warning: symbol 'lwt_out_prog_ops' was not declared. Should it be static?
net/core/filter.c:8529:31: warning: symbol 'lwt_xmit_verifier_ops' was not declared. Should it be static?
net/core/filter.c:8536:27: warning: symbol 'lwt_xmit_prog_ops' was not declared. Should it be static?
net/core/filter.c:8540:31: warning: symbol 'lwt_seg6local_verifier_ops' was not declared. Should it be static?
net/core/filter.c:8546:27: warning: symbol 'lwt_seg6local_prog_ops' was not declared. Should it be static?
net/core/filter.c:8550:31: warning: symbol 'cg_sock_verifier_ops' was not declared. Should it be static?
net/core/filter.c:8556:27: warning: symbol 'cg_sock_prog_ops' was not declared. Should it be static?
net/core/filter.c:8559:31: warning: symbol 'cg_sock_addr_verifier_ops' was not declared. Should it be static?
net/core/filter.c:8565:27: warning: symbol 'cg_sock_addr_prog_ops' was not declared. Should it be static?
net/core/filter.c:8568:31: warning: symbol 'sock_ops_verifier_ops' was not declared. Should it be static?
net/core/filter.c:8574:27: warning: symbol 'sock_ops_prog_ops' was not declared. Should it be static?
net/core/filter.c:8577:31: warning: symbol 'sk_skb_verifier_ops' was not declared. Should it be static?
net/core/filter.c:8584:27: warning: symbol 'sk_skb_prog_ops' was not declared. Should it be static?
net/core/filter.c:8587:31: warning: symbol 'sk_msg_verifier_ops' was not declared. Should it be static?
net/core/filter.c:8594:27: warning: symbol 'sk_msg_prog_ops' was not declared. Should it be static?
net/core/filter.c:8597:31: warning: symbol 'flow_dissector_verifier_ops' was not declared. Should it be static?
net/core/filter.c:8603:27: warning: symbol 'flow_dissector_prog_ops' was not declared. Should it be static?
net/core/filter.c:8929:31: warning: symbol 'sk_reuseport_verifier_ops' was not declared. Should it be static?
net/core/filter.c:8935:27: warning: symbol 'sk_reuseport_prog_ops' was not declared. Should it be static?
Signed-off-by: Ben Dooks <[email protected]>
---
Cc: Alexei Starovoitov <[email protected]>
Cc: Daniel Borkmann <[email protected]>
Cc: Martin KaFai Lau <[email protected]>
Cc: Song Liu <[email protected]>
Cc: Yonghong Song <[email protected]>
Cc: "David S. Miller" <[email protected]>
Cc: Jakub Kicinski <[email protected]>
Cc: Jesper Dangaard Brouer <[email protected]>
Cc: John Fastabend <[email protected]>
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
---
net/core/filter.c | 60 +++++++++++++++++++++++------------------------
1 file changed, 30 insertions(+), 30 deletions(-)
diff --git a/net/core/filter.c b/net/core/filter.c
index ed6563622ce3..f7338fee41f8 100644
--- a/net/core/filter.c
+++ b/net/core/filter.c
@@ -8462,18 +8462,18 @@ static u32 sk_msg_convert_ctx_access(enum bpf_access_type type,
return insn - insn_buf;
}
-const struct bpf_verifier_ops sk_filter_verifier_ops = {
+static const struct bpf_verifier_ops sk_filter_verifier_ops = {
.get_func_proto = sk_filter_func_proto,
.is_valid_access = sk_filter_is_valid_access,
.convert_ctx_access = bpf_convert_ctx_access,
.gen_ld_abs = bpf_gen_ld_abs,
};
-const struct bpf_prog_ops sk_filter_prog_ops = {
+static const struct bpf_prog_ops sk_filter_prog_ops = {
.test_run = bpf_prog_test_run_skb,
};
-const struct bpf_verifier_ops tc_cls_act_verifier_ops = {
+static const struct bpf_verifier_ops tc_cls_act_verifier_ops = {
.get_func_proto = tc_cls_act_func_proto,
.is_valid_access = tc_cls_act_is_valid_access,
.convert_ctx_access = tc_cls_act_convert_ctx_access,
@@ -8481,126 +8481,126 @@ const struct bpf_verifier_ops tc_cls_act_verifier_ops = {
.gen_ld_abs = bpf_gen_ld_abs,
};
-const struct bpf_prog_ops tc_cls_act_prog_ops = {
+static const struct bpf_prog_ops tc_cls_act_prog_ops = {
.test_run = bpf_prog_test_run_skb,
};
-const struct bpf_verifier_ops xdp_verifier_ops = {
+static const struct bpf_verifier_ops xdp_verifier_ops = {
.get_func_proto = xdp_func_proto,
.is_valid_access = xdp_is_valid_access,
.convert_ctx_access = xdp_convert_ctx_access,
.gen_prologue = bpf_noop_prologue,
};
-const struct bpf_prog_ops xdp_prog_ops = {
+static const struct bpf_prog_ops xdp_prog_ops = {
.test_run = bpf_prog_test_run_xdp,
};
-const struct bpf_verifier_ops cg_skb_verifier_ops = {
+static const struct bpf_verifier_ops cg_skb_verifier_ops = {
.get_func_proto = cg_skb_func_proto,
.is_valid_access = cg_skb_is_valid_access,
.convert_ctx_access = bpf_convert_ctx_access,
};
-const struct bpf_prog_ops cg_skb_prog_ops = {
+static const struct bpf_prog_ops cg_skb_prog_ops = {
.test_run = bpf_prog_test_run_skb,
};
-const struct bpf_verifier_ops lwt_in_verifier_ops = {
+static const struct bpf_verifier_ops lwt_in_verifier_ops = {
.get_func_proto = lwt_in_func_proto,
.is_valid_access = lwt_is_valid_access,
.convert_ctx_access = bpf_convert_ctx_access,
};
-const struct bpf_prog_ops lwt_in_prog_ops = {
+static const struct bpf_prog_ops lwt_in_prog_ops = {
.test_run = bpf_prog_test_run_skb,
};
-const struct bpf_verifier_ops lwt_out_verifier_ops = {
+static const struct bpf_verifier_ops lwt_out_verifier_ops = {
.get_func_proto = lwt_out_func_proto,
.is_valid_access = lwt_is_valid_access,
.convert_ctx_access = bpf_convert_ctx_access,
};
-const struct bpf_prog_ops lwt_out_prog_ops = {
+static const struct bpf_prog_ops lwt_out_prog_ops = {
.test_run = bpf_prog_test_run_skb,
};
-const struct bpf_verifier_ops lwt_xmit_verifier_ops = {
+static const struct bpf_verifier_ops lwt_xmit_verifier_ops = {
.get_func_proto = lwt_xmit_func_proto,
.is_valid_access = lwt_is_valid_access,
.convert_ctx_access = bpf_convert_ctx_access,
.gen_prologue = tc_cls_act_prologue,
};
-const struct bpf_prog_ops lwt_xmit_prog_ops = {
+static const struct bpf_prog_ops lwt_xmit_prog_ops = {
.test_run = bpf_prog_test_run_skb,
};
-const struct bpf_verifier_ops lwt_seg6local_verifier_ops = {
+static const struct bpf_verifier_ops lwt_seg6local_verifier_ops = {
.get_func_proto = lwt_seg6local_func_proto,
.is_valid_access = lwt_is_valid_access,
.convert_ctx_access = bpf_convert_ctx_access,
};
-const struct bpf_prog_ops lwt_seg6local_prog_ops = {
+static const struct bpf_prog_ops lwt_seg6local_prog_ops = {
.test_run = bpf_prog_test_run_skb,
};
-const struct bpf_verifier_ops cg_sock_verifier_ops = {
+static const struct bpf_verifier_ops cg_sock_verifier_ops = {
.get_func_proto = sock_filter_func_proto,
.is_valid_access = sock_filter_is_valid_access,
.convert_ctx_access = bpf_sock_convert_ctx_access,
};
-const struct bpf_prog_ops cg_sock_prog_ops = {
+static const struct bpf_prog_ops cg_sock_prog_ops = {
};
-const struct bpf_verifier_ops cg_sock_addr_verifier_ops = {
+static const struct bpf_verifier_ops cg_sock_addr_verifier_ops = {
.get_func_proto = sock_addr_func_proto,
.is_valid_access = sock_addr_is_valid_access,
.convert_ctx_access = sock_addr_convert_ctx_access,
};
-const struct bpf_prog_ops cg_sock_addr_prog_ops = {
+static const struct bpf_prog_ops cg_sock_addr_prog_ops = {
};
-const struct bpf_verifier_ops sock_ops_verifier_ops = {
+static const struct bpf_verifier_ops sock_ops_verifier_ops = {
.get_func_proto = sock_ops_func_proto,
.is_valid_access = sock_ops_is_valid_access,
.convert_ctx_access = sock_ops_convert_ctx_access,
};
-const struct bpf_prog_ops sock_ops_prog_ops = {
+static const struct bpf_prog_ops sock_ops_prog_ops = {
};
-const struct bpf_verifier_ops sk_skb_verifier_ops = {
+static const struct bpf_verifier_ops sk_skb_verifier_ops = {
.get_func_proto = sk_skb_func_proto,
.is_valid_access = sk_skb_is_valid_access,
.convert_ctx_access = sk_skb_convert_ctx_access,
.gen_prologue = sk_skb_prologue,
};
-const struct bpf_prog_ops sk_skb_prog_ops = {
+static const struct bpf_prog_ops sk_skb_prog_ops = {
};
-const struct bpf_verifier_ops sk_msg_verifier_ops = {
+static const struct bpf_verifier_ops sk_msg_verifier_ops = {
.get_func_proto = sk_msg_func_proto,
.is_valid_access = sk_msg_is_valid_access,
.convert_ctx_access = sk_msg_convert_ctx_access,
.gen_prologue = bpf_noop_prologue,
};
-const struct bpf_prog_ops sk_msg_prog_ops = {
+static const struct bpf_prog_ops sk_msg_prog_ops = {
};
-const struct bpf_verifier_ops flow_dissector_verifier_ops = {
+static const struct bpf_verifier_ops flow_dissector_verifier_ops = {
.get_func_proto = flow_dissector_func_proto,
.is_valid_access = flow_dissector_is_valid_access,
.convert_ctx_access = flow_dissector_convert_ctx_access,
};
-const struct bpf_prog_ops flow_dissector_prog_ops = {
+static const struct bpf_prog_ops flow_dissector_prog_ops = {
.test_run = bpf_prog_test_run_flow_dissector,
};
@@ -8926,12 +8926,12 @@ static u32 sk_reuseport_convert_ctx_access(enum bpf_access_type type,
return insn - insn_buf;
}
-const struct bpf_verifier_ops sk_reuseport_verifier_ops = {
+static const struct bpf_verifier_ops sk_reuseport_verifier_ops = {
.get_func_proto = sk_reuseport_func_proto,
.is_valid_access = sk_reuseport_is_valid_access,
.convert_ctx_access = sk_reuseport_convert_ctx_access,
};
-const struct bpf_prog_ops sk_reuseport_prog_ops = {
+static const struct bpf_prog_ops sk_reuseport_prog_ops = {
};
#endif /* CONFIG_INET */
--
2.23.0
On Wed, Oct 16, 2019 at 12:04:46PM +0100, Ben Dooks (Codethink) wrote:
> There are a number of structs in net/core/filter.c
> that are not exported or declared outside of the
> file. Fix the following warnings by making these
> all static:
>
> net/core/filter.c:8465:31: warning: symbol 'sk_filter_verifier_ops' was not declared. Should it be static?
> net/core/filter.c:8472:27: warning: symbol 'sk_filter_prog_ops' was not declared. Should it be static?
[...]
> net/core/filter.c:8935:27: warning: symbol 'sk_reuseport_prog_ops' was not declared. Should it be static?
>
> Signed-off-by: Ben Dooks <[email protected]>
> ---
> Cc: Alexei Starovoitov <[email protected]>
> Cc: Daniel Borkmann <[email protected]>
> Cc: Martin KaFai Lau <[email protected]>
> Cc: Song Liu <[email protected]>
> Cc: Yonghong Song <[email protected]>
> Cc: "David S. Miller" <[email protected]>
> Cc: Jakub Kicinski <[email protected]>
> Cc: Jesper Dangaard Brouer <[email protected]>
> Cc: John Fastabend <[email protected]>
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]
> ---
> net/core/filter.c | 60 +++++++++++++++++++++++------------------------
> 1 file changed, 30 insertions(+), 30 deletions(-)
>
> diff --git a/net/core/filter.c b/net/core/filter.c
> index ed6563622ce3..f7338fee41f8 100644
> --- a/net/core/filter.c
> +++ b/net/core/filter.c
> @@ -8462,18 +8462,18 @@ static u32 sk_msg_convert_ctx_access(enum bpf_access_type type,
> return insn - insn_buf;
> }
>
> -const struct bpf_verifier_ops sk_filter_verifier_ops = {
> +static const struct bpf_verifier_ops sk_filter_verifier_ops = {
> .get_func_proto = sk_filter_func_proto,
> .is_valid_access = sk_filter_is_valid_access,
> .convert_ctx_access = bpf_convert_ctx_access,
> .gen_ld_abs = bpf_gen_ld_abs,
> };
Big obvious NAK. I'm puzzled that you try to fix a compile warning, but without
even bothering to compile the result after your patch ...
Seen BPF_PROG_TYPE() ?
Thanks,
Daniel
On 16/10/2019 13:26, Daniel Borkmann wrote:
> On Wed, Oct 16, 2019 at 12:04:46PM +0100, Ben Dooks (Codethink) wrote:
>> There are a number of structs in net/core/filter.c
>> that are not exported or declared outside of the
>> file. Fix the following warnings by making these
>> all static:
>>
>> net/core/filter.c:8465:31: warning: symbol 'sk_filter_verifier_ops' was not declared. Should it be static?
>> net/core/filter.c:8472:27: warning: symbol 'sk_filter_prog_ops' was not declared. Should it be static?
> [...]
>> net/core/filter.c:8935:27: warning: symbol 'sk_reuseport_prog_ops' was not declared. Should it be static?
>>
>> Signed-off-by: Ben Dooks <[email protected]>
>> ---
>> Cc: Alexei Starovoitov <[email protected]>
>> Cc: Daniel Borkmann <[email protected]>
>> Cc: Martin KaFai Lau <[email protected]>
>> Cc: Song Liu <[email protected]>
>> Cc: Yonghong Song <[email protected]>
>> Cc: "David S. Miller" <[email protected]>
>> Cc: Jakub Kicinski <[email protected]>
>> Cc: Jesper Dangaard Brouer <[email protected]>
>> Cc: John Fastabend <[email protected]>
>> Cc: [email protected]
>> Cc: [email protected]
>> Cc: [email protected]
>> ---
>> net/core/filter.c | 60 +++++++++++++++++++++++------------------------
>> 1 file changed, 30 insertions(+), 30 deletions(-)
>>
>> diff --git a/net/core/filter.c b/net/core/filter.c
>> index ed6563622ce3..f7338fee41f8 100644
>> --- a/net/core/filter.c
>> +++ b/net/core/filter.c
>> @@ -8462,18 +8462,18 @@ static u32 sk_msg_convert_ctx_access(enum bpf_access_type type,
>> return insn - insn_buf;
>> }
>>
>> -const struct bpf_verifier_ops sk_filter_verifier_ops = {
>> +static const struct bpf_verifier_ops sk_filter_verifier_ops = {
>> .get_func_proto = sk_filter_func_proto,
>> .is_valid_access = sk_filter_is_valid_access,
>> .convert_ctx_access = bpf_convert_ctx_access,
>> .gen_ld_abs = bpf_gen_ld_abs,
>> };
>
> Big obvious NAK. I'm puzzled that you try to fix a compile warning, but without
> even bothering to compile the result after your patch ...
builds fine. maybe some effort to stop this happening again should be made.
> Seen BPF_PROG_TYPE() ?
--
Ben Dooks http://www.codethink.co.uk/
Senior Engineer Codethink - Providing Genius
https://www.codethink.co.uk/privacy.html
On Wed, Oct 16, 2019 at 02:02:31PM +0100, Ben Dooks wrote:
> On 16/10/2019 13:26, Daniel Borkmann wrote:
> > On Wed, Oct 16, 2019 at 12:04:46PM +0100, Ben Dooks (Codethink) wrote:
> > > There are a number of structs in net/core/filter.c
> > > that are not exported or declared outside of the
> > > file. Fix the following warnings by making these
> > > all static:
> > >
> > > net/core/filter.c:8465:31: warning: symbol 'sk_filter_verifier_ops' was not declared. Should it be static?
> > > net/core/filter.c:8472:27: warning: symbol 'sk_filter_prog_ops' was not declared. Should it be static?
> > [...]
> > > net/core/filter.c:8935:27: warning: symbol 'sk_reuseport_prog_ops' was not declared. Should it be static?
> > >
> > > Signed-off-by: Ben Dooks <[email protected]>
> > > ---
> > > Cc: Alexei Starovoitov <[email protected]>
> > > Cc: Daniel Borkmann <[email protected]>
> > > Cc: Martin KaFai Lau <[email protected]>
> > > Cc: Song Liu <[email protected]>
> > > Cc: Yonghong Song <[email protected]>
> > > Cc: "David S. Miller" <[email protected]>
> > > Cc: Jakub Kicinski <[email protected]>
> > > Cc: Jesper Dangaard Brouer <[email protected]>
> > > Cc: John Fastabend <[email protected]>
> > > Cc: [email protected]
> > > Cc: [email protected]
> > > Cc: [email protected]
> > > ---
> > > net/core/filter.c | 60 +++++++++++++++++++++++------------------------
> > > 1 file changed, 30 insertions(+), 30 deletions(-)
> > >
> > > diff --git a/net/core/filter.c b/net/core/filter.c
> > > index ed6563622ce3..f7338fee41f8 100644
> > > --- a/net/core/filter.c
> > > +++ b/net/core/filter.c
> > > @@ -8462,18 +8462,18 @@ static u32 sk_msg_convert_ctx_access(enum bpf_access_type type,
> > > return insn - insn_buf;
> > > }
> > > -const struct bpf_verifier_ops sk_filter_verifier_ops = {
> > > +static const struct bpf_verifier_ops sk_filter_verifier_ops = {
> > > .get_func_proto = sk_filter_func_proto,
> > > .is_valid_access = sk_filter_is_valid_access,
> > > .convert_ctx_access = bpf_convert_ctx_access,
> > > .gen_ld_abs = bpf_gen_ld_abs,
> > > };
> >
> > Big obvious NAK. I'm puzzled that you try to fix a compile warning, but without
> > even bothering to compile the result after your patch ...
>
> builds fine. maybe some effort to stop this happening again should be made.
It doesn't build, because they are used/needed outside:
[...]
CC net/core/dev_ioctl.o
CC net/core/tso.o
net/core/filter.c:8467:38: error: static declaration of ‘sk_filter_verifier_ops’ follows non-static declaration
8467 | static const struct bpf_verifier_ops sk_filter_verifier_ops = {
| ^~~~~~~~~~~~~~~~~~~~~~
In file included from ./include/linux/bpf-cgroup.h:5,
from ./include/linux/cgroup-defs.h:22,
from ./include/linux/cgroup.h:28,
from ./include/net/netprio_cgroup.h:11,
from ./include/linux/netdevice.h:42,
from ./include/net/sock.h:46,
from ./include/linux/sock_diag.h:8,
from net/core/filter.c:25:
./include/linux/bpf_types.h:5:44: note: previous declaration of ‘sk_filter_verifier_ops’ was here
5 | BPF_PROG_TYPE(BPF_PROG_TYPE_SOCKET_FILTER, sk_filter)
| ^~~~~~~~~
./include/linux/bpf.h:625:39: note: in definition of macro ‘BPF_PROG_TYPE’
625 | extern const struct bpf_verifier_ops _name ## _verifier_ops;
| ^~~~~
[...] ( and more of the same errors ... )
On 16/10/2019 14:10, Daniel Borkmann wrote:
> On Wed, Oct 16, 2019 at 02:02:31PM +0100, Ben Dooks wrote:
>> On 16/10/2019 13:26, Daniel Borkmann wrote:
>>> On Wed, Oct 16, 2019 at 12:04:46PM +0100, Ben Dooks (Codethink) wrote:
>>>> There are a number of structs in net/core/filter.c
>>>> that are not exported or declared outside of the
>>>> file. Fix the following warnings by making these
>>>> all static:
>>>>
>>>> net/core/filter.c:8465:31: warning: symbol 'sk_filter_verifier_ops' was not declared. Should it be static?
>>>> net/core/filter.c:8472:27: warning: symbol 'sk_filter_prog_ops' was not declared. Should it be static?
>>> [...]
>>>> net/core/filter.c:8935:27: warning: symbol 'sk_reuseport_prog_ops' was not declared. Should it be static?
>>>>
>>>> Signed-off-by: Ben Dooks <[email protected]>
>>>> ---
>>>> Cc: Alexei Starovoitov <[email protected]>
>>>> Cc: Daniel Borkmann <[email protected]>
>>>> Cc: Martin KaFai Lau <[email protected]>
>>>> Cc: Song Liu <[email protected]>
>>>> Cc: Yonghong Song <[email protected]>
>>>> Cc: "David S. Miller" <[email protected]>
>>>> Cc: Jakub Kicinski <[email protected]>
>>>> Cc: Jesper Dangaard Brouer <[email protected]>
>>>> Cc: John Fastabend <[email protected]>
>>>> Cc: [email protected]
>>>> Cc: [email protected]
>>>> Cc: [email protected]
>>>> ---
>>>> net/core/filter.c | 60 +++++++++++++++++++++++------------------------
>>>> 1 file changed, 30 insertions(+), 30 deletions(-)
>>>>
>>>> diff --git a/net/core/filter.c b/net/core/filter.c
>>>> index ed6563622ce3..f7338fee41f8 100644
>>>> --- a/net/core/filter.c
>>>> +++ b/net/core/filter.c
>>>> @@ -8462,18 +8462,18 @@ static u32 sk_msg_convert_ctx_access(enum bpf_access_type type,
>>>> return insn - insn_buf;
>>>> }
>>>> -const struct bpf_verifier_ops sk_filter_verifier_ops = {
>>>> +static const struct bpf_verifier_ops sk_filter_verifier_ops = {
>>>> .get_func_proto = sk_filter_func_proto,
>>>> .is_valid_access = sk_filter_is_valid_access,
>>>> .convert_ctx_access = bpf_convert_ctx_access,
>>>> .gen_ld_abs = bpf_gen_ld_abs,
>>>> };
>>>
>>> Big obvious NAK. I'm puzzled that you try to fix a compile warning, but without
>>> even bothering to compile the result after your patch ...
>>
>> builds fine. maybe some effort to stop this happening again should be made.
>
> It doesn't build, because they are used/needed outside:
Hmm, your config it does, I get /none/ of these warnings.
I guess a lot of this is being built whether or not is then used.
--
Ben Dooks http://www.codethink.co.uk/
Senior Engineer Codethink - Providing Genius
https://www.codethink.co.uk/privacy.html
On 16/10/2019 14:11, Ben Dooks wrote:
> On 16/10/2019 14:10, Daniel Borkmann wrote:
>> On Wed, Oct 16, 2019 at 02:02:31PM +0100, Ben Dooks wrote:
>>> On 16/10/2019 13:26, Daniel Borkmann wrote:
>>>> On Wed, Oct 16, 2019 at 12:04:46PM +0100, Ben Dooks (Codethink) wrote:
>>>>> There are a number of structs in net/core/filter.c
>>>>> that are not exported or declared outside of the
>>>>> file. Fix the following warnings by making these
>>>>> all static:
>>>>>
>>>>> net/core/filter.c:8465:31: warning: symbol 'sk_filter_verifier_ops'
>>>>> was not declared. Should it be static?
>>>>> net/core/filter.c:8472:27: warning: symbol 'sk_filter_prog_ops' was
>>>>> not declared. Should it be static?
>>>> [...]
>>>>> net/core/filter.c:8935:27: warning: symbol 'sk_reuseport_prog_ops'
>>>>> was not declared. Should it be static?
>>>>>
>>>>> Signed-off-by: Ben Dooks <[email protected]>
>>>>> ---
>>>>> Cc: Alexei Starovoitov <[email protected]>
>>>>> Cc: Daniel Borkmann <[email protected]>
>>>>> Cc: Martin KaFai Lau <[email protected]>
>>>>> Cc: Song Liu <[email protected]>
>>>>> Cc: Yonghong Song <[email protected]>
>>>>> Cc: "David S. Miller" <[email protected]>
>>>>> Cc: Jakub Kicinski <[email protected]>
>>>>> Cc: Jesper Dangaard Brouer <[email protected]>
>>>>> Cc: John Fastabend <[email protected]>
>>>>> Cc: [email protected]
>>>>> Cc: [email protected]
>>>>> Cc: [email protected]
>>>>> ---
>>>>> net/core/filter.c | 60
>>>>> +++++++++++++++++++++++------------------------
>>>>> 1 file changed, 30 insertions(+), 30 deletions(-)
>>>>>
>>>>> diff --git a/net/core/filter.c b/net/core/filter.c
>>>>> index ed6563622ce3..f7338fee41f8 100644
>>>>> --- a/net/core/filter.c
>>>>> +++ b/net/core/filter.c
>>>>> @@ -8462,18 +8462,18 @@ static u32 sk_msg_convert_ctx_access(enum
>>>>> bpf_access_type type,
>>>>> return insn - insn_buf;
>>>>> }
>>>>> -const struct bpf_verifier_ops sk_filter_verifier_ops = {
>>>>> +static const struct bpf_verifier_ops sk_filter_verifier_ops = {
>>>>> .get_func_proto = sk_filter_func_proto,
>>>>> .is_valid_access = sk_filter_is_valid_access,
>>>>> .convert_ctx_access = bpf_convert_ctx_access,
>>>>> .gen_ld_abs = bpf_gen_ld_abs,
>>>>> };
>>>>
>>>> Big obvious NAK. I'm puzzled that you try to fix a compile warning,
>>>> but without
>>>> even bothering to compile the result after your patch ...
>>>
>>> builds fine. maybe some effort to stop this happening again should be
>>> made.
>>
>> It doesn't build, because they are used/needed outside:
>
> Hmm, your config it does, I get /none/ of these warnings.
>
> I guess a lot of this is being built whether or not is then used.
Without CONFIG_BPF_SYSCALL, a part of net/core/filter.c is being
built but then not declared or used. Should this be split up or
the areas not being built be removed?
--
Ben Dooks http://www.codethink.co.uk/
Senior Engineer Codethink - Providing Genius
https://www.codethink.co.uk/privacy.html
From: Ben Dooks <[email protected]>
Date: Wed, 16 Oct 2019 14:11:52 +0100
> Hmm, your config it does, I get /none/ of these warnings.
>
> I guess a lot of this is being built whether or not is then used.
When you are making changes like this, unless you have done a full grep
over the tree and are %100 sure it is unrefrenced you should do at
a minimum an allmodconfig build.
Otherwise by definition you are not testing the build of this change.