2021-02-02 22:27:05

by Leon Romanovsky

[permalink] [raw]
Subject: [PATCH net 0/4] Fix W=1 compilation warnings in net/* folder

From: Leon Romanovsky <[email protected]>

Hi,

This short series fixes W=1 compilation warnings which I experienced
when tried to compile net/* folder.

Thanks

Leon Romanovsky (4):
ipv6: silence compilation warning for non-IPV6 builds
ipv6: move udp declarations to net/udp.h
net/core: move ipv6 gro function declarations to net/ipv6
netfilter: move handlers to net/ip_vs.h

include/net/ip_vs.h | 11 +++++++++++
include/net/ipv6.h | 3 +++
include/net/udp.h | 3 +++
net/core/dev.c | 4 +---
net/ipv6/icmp.c | 6 ++++++
net/ipv6/ip6_input.c | 3 +--
net/netfilter/ipvs/ip_vs_core.c | 12 ------------
7 files changed, 25 insertions(+), 17 deletions(-)

--
2.29.2


2021-02-02 22:27:32

by Leon Romanovsky

[permalink] [raw]
Subject: [PATCH net 1/4] ipv6: silence compilation warning for non-IPV6 builds

From: Leon Romanovsky <[email protected]>

The W=1 compilation of allmodconfig generates the following warning:

net/ipv6/icmp.c:448:6: warning: no previous prototype for 'icmp6_send' [-Wmissing-prototypes]
448 | void icmp6_send(struct sk_buff *skb, u8 type, u8 code, __u32 info,
| ^~~~~~~~~~

In such configuration, the icmp6_send() is not used outside of icmp.c, so close
its EXPORT_SYMBOL and add "static" word to limit the scope.

Fixes: cc7a21b6fbd9 ("ipv6: icmp6: avoid indirect call for icmpv6_send()")
Signed-off-by: Leon Romanovsky <[email protected]>
---
net/ipv6/icmp.c | 6 ++++++
1 file changed, 6 insertions(+)

diff --git a/net/ipv6/icmp.c b/net/ipv6/icmp.c
index f3d05866692e..5d4232b492dc 100644
--- a/net/ipv6/icmp.c
+++ b/net/ipv6/icmp.c
@@ -445,6 +445,9 @@ static int icmp6_iif(const struct sk_buff *skb)
/*
* Send an ICMP message in response to a packet in error
*/
+#if !IS_BUILTIN(CONFIG_IPV6)
+static
+#endif
void icmp6_send(struct sk_buff *skb, u8 type, u8 code, __u32 info,
const struct in6_addr *force_saddr)
{
@@ -634,7 +637,10 @@ void icmp6_send(struct sk_buff *skb, u8 type, u8 code, __u32 info,
out_bh_enable:
local_bh_enable();
}
+
+#if IS_BUILTIN(CONFIG_IPV6)
EXPORT_SYMBOL(icmp6_send);
+#endif

/* Slightly more convenient version of icmp6_send.
*/
--
2.29.2

2021-02-02 22:27:35

by Leon Romanovsky

[permalink] [raw]
Subject: [PATCH net 2/4] ipv6: move udp declarations to net/udp.h

From: Leon Romanovsky <[email protected]>

Fix the following compilation warning:

net/ipv6/udp.c:1031:30: warning: no previous prototype for 'udp_v6_early_demux' [-Wmissing-prototypes]
1031 | INDIRECT_CALLABLE_SCOPE void udp_v6_early_demux(struct sk_buff *skb)
| ^~~~~~~~~~~~~~~~~~
net/ipv6/udp.c:1072:29: warning: no previous prototype for 'udpv6_rcv' [-Wmissing-prototypes]
1072 | INDIRECT_CALLABLE_SCOPE int udpv6_rcv(struct sk_buff *skb)
| ^~~~~~~~~

Fixes: 97ff7ffb11fe ("net: use indirect calls helpers at early demux stage")
Signed-off-by: Leon Romanovsky <[email protected]>
---
include/net/udp.h | 3 +++
net/ipv6/ip6_input.c | 3 +--
2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/include/net/udp.h b/include/net/udp.h
index 877832bed471..ff2de866bca4 100644
--- a/include/net/udp.h
+++ b/include/net/udp.h
@@ -173,6 +173,9 @@ INDIRECT_CALLABLE_DECLARE(int udp4_gro_complete(struct sk_buff *, int));
INDIRECT_CALLABLE_DECLARE(struct sk_buff *udp6_gro_receive(struct list_head *,
struct sk_buff *));
INDIRECT_CALLABLE_DECLARE(int udp6_gro_complete(struct sk_buff *, int));
+INDIRECT_CALLABLE_DECLARE(void udp_v6_early_demux(struct sk_buff *));
+INDIRECT_CALLABLE_DECLARE(int udpv6_rcv(struct sk_buff *));
+
struct sk_buff *udp_gro_receive(struct list_head *head, struct sk_buff *skb,
struct udphdr *uh, struct sock *sk);
int udp_gro_complete(struct sk_buff *skb, int nhoff, udp_lookup_t lookup);
diff --git a/net/ipv6/ip6_input.c b/net/ipv6/ip6_input.c
index e96304d8a4a7..e9d2a4a409aa 100644
--- a/net/ipv6/ip6_input.c
+++ b/net/ipv6/ip6_input.c
@@ -32,6 +32,7 @@

#include <net/sock.h>
#include <net/snmp.h>
+#include <net/udp.h>

#include <net/ipv6.h>
#include <net/protocol.h>
@@ -44,7 +45,6 @@
#include <net/inet_ecn.h>
#include <net/dst_metadata.h>

-INDIRECT_CALLABLE_DECLARE(void udp_v6_early_demux(struct sk_buff *));
INDIRECT_CALLABLE_DECLARE(void tcp_v6_early_demux(struct sk_buff *));
static void ip6_rcv_finish_core(struct net *net, struct sock *sk,
struct sk_buff *skb)
@@ -352,7 +352,6 @@ void ipv6_list_rcv(struct list_head *head, struct packet_type *pt,
ip6_sublist_rcv(&sublist, curr_dev, curr_net);
}

-INDIRECT_CALLABLE_DECLARE(int udpv6_rcv(struct sk_buff *));
INDIRECT_CALLABLE_DECLARE(int tcp_v6_rcv(struct sk_buff *));

/*
--
2.29.2

2021-02-02 22:28:03

by Eric Dumazet

[permalink] [raw]
Subject: Re: [PATCH net 0/4] Fix W=1 compilation warnings in net/* folder

On Tue, Feb 2, 2021 at 2:55 PM Leon Romanovsky <[email protected]> wrote:
>
> From: Leon Romanovsky <[email protected]>
>
> Hi,
>
> This short series fixes W=1 compilation warnings which I experienced
> when tried to compile net/* folder.
>

Ok, but we never had a strong requirement about W=1, so adding Fixes:
tag is adding
unnecessary burden to stable teams all around the world.

2021-02-02 22:31:11

by Eric Dumazet

[permalink] [raw]
Subject: Re: [PATCH net 0/4] Fix W=1 compilation warnings in net/* folder

On Tue, Feb 2, 2021 at 3:57 PM Leon Romanovsky <[email protected]> wrote:
>
> On Tue, Feb 02, 2021 at 03:34:37PM +0100, Eric Dumazet wrote:
> > On Tue, Feb 2, 2021 at 2:55 PM Leon Romanovsky <[email protected]> wrote:
> > >
> > > From: Leon Romanovsky <[email protected]>
> > >
> > > Hi,
> > >
> > > This short series fixes W=1 compilation warnings which I experienced
> > > when tried to compile net/* folder.
> > >
> >
> > Ok, but we never had a strong requirement about W=1, so adding Fixes:
> > tag is adding
>
> I added because Jakub has checker that looks for Fixes lines in "net"
> patches.

Send this to net-next

As I stated, we never enforce W=1 compilation rule.

I understand we might want that for _future_ kernels.

>
> > unnecessary burden to stable teams all around the world.
>
> It is automatic.

I do receive a copy of all backports in my mailbox, whenever I am tagged.

I can tell you there is a lot of pollution.

>
> Thanks

2021-02-02 22:32:31

by Leon Romanovsky

[permalink] [raw]
Subject: Re: [PATCH net 0/4] Fix W=1 compilation warnings in net/* folder

On Tue, Feb 02, 2021 at 03:34:37PM +0100, Eric Dumazet wrote:
> On Tue, Feb 2, 2021 at 2:55 PM Leon Romanovsky <[email protected]> wrote:
> >
> > From: Leon Romanovsky <[email protected]>
> >
> > Hi,
> >
> > This short series fixes W=1 compilation warnings which I experienced
> > when tried to compile net/* folder.
> >
>
> Ok, but we never had a strong requirement about W=1, so adding Fixes:
> tag is adding

I added because Jakub has checker that looks for Fixes lines in "net"
patches.

> unnecessary burden to stable teams all around the world.

It is automatic.

Thanks

2021-02-02 22:45:35

by Leon Romanovsky

[permalink] [raw]
Subject: Re: [PATCH net 0/4] Fix W=1 compilation warnings in net/* folder

On Tue, Feb 02, 2021 at 03:59:38PM +0100, Eric Dumazet wrote:
> On Tue, Feb 2, 2021 at 3:57 PM Leon Romanovsky <[email protected]> wrote:
> >
> > On Tue, Feb 02, 2021 at 03:34:37PM +0100, Eric Dumazet wrote:
> > > On Tue, Feb 2, 2021 at 2:55 PM Leon Romanovsky <[email protected]> wrote:
> > > >
> > > > From: Leon Romanovsky <[email protected]>
> > > >
> > > > Hi,
> > > >
> > > > This short series fixes W=1 compilation warnings which I experienced
> > > > when tried to compile net/* folder.
> > > >
> > >
> > > Ok, but we never had a strong requirement about W=1, so adding Fixes:
> > > tag is adding
> >
> > I added because Jakub has checker that looks for Fixes lines in "net"
> > patches.
>
> Send this to net-next

No problem.

>
> As I stated, we never enforce W=1 compilation rule.
>
> I understand we might want that for _future_ kernels.
>
> >
> > > unnecessary burden to stable teams all around the world.
> >
> > It is automatic.
>
> I do receive a copy of all backports in my mailbox, whenever I am tagged.
>
> I can tell you there is a lot of pollution.

I'm receiving them either.

>
> >
> > Thanks

2021-02-02 23:11:18

by Jakub Kicinski

[permalink] [raw]
Subject: Re: [PATCH net 1/4] ipv6: silence compilation warning for non-IPV6 builds

On Tue, 2 Feb 2021 15:55:41 +0200 Leon Romanovsky wrote:
> From: Leon Romanovsky <[email protected]>
>
> The W=1 compilation of allmodconfig generates the following warning:
>
> net/ipv6/icmp.c:448:6: warning: no previous prototype for 'icmp6_send' [-Wmissing-prototypes]
> 448 | void icmp6_send(struct sk_buff *skb, u8 type, u8 code, __u32 info,
> | ^~~~~~~~~~
>
> In such configuration, the icmp6_send() is not used outside of icmp.c, so close
> its EXPORT_SYMBOL and add "static" word to limit the scope.
>
> Fixes: cc7a21b6fbd9 ("ipv6: icmp6: avoid indirect call for icmpv6_send()")
> Signed-off-by: Leon Romanovsky <[email protected]>

That's a little much ifdefinery, why not move the declaration from
under the ifdef in the header instead?

If you repost please target net-next, admittedly these fixes are pretty
"obviously correct" but they are not urgent either.

> diff --git a/net/ipv6/icmp.c b/net/ipv6/icmp.c
> index f3d05866692e..5d4232b492dc 100644
> --- a/net/ipv6/icmp.c
> +++ b/net/ipv6/icmp.c
> @@ -445,6 +445,9 @@ static int icmp6_iif(const struct sk_buff *skb)
> /*
> * Send an ICMP message in response to a packet in error
> */
> +#if !IS_BUILTIN(CONFIG_IPV6)
> +static
> +#endif
> void icmp6_send(struct sk_buff *skb, u8 type, u8 code, __u32 info,
> const struct in6_addr *force_saddr)
> {
> @@ -634,7 +637,10 @@ void icmp6_send(struct sk_buff *skb, u8 type, u8 code, __u32 info,
> out_bh_enable:
> local_bh_enable();
> }
> +
> +#if IS_BUILTIN(CONFIG_IPV6)
> EXPORT_SYMBOL(icmp6_send);
> +#endif
>
> /* Slightly more convenient version of icmp6_send.
> */
> --
> 2.29.2
>

2021-02-03 00:43:36

by Leon Romanovsky

[permalink] [raw]
Subject: Re: [PATCH net 1/4] ipv6: silence compilation warning for non-IPV6 builds

On Tue, Feb 02, 2021 at 08:29:09AM -0800, Jakub Kicinski wrote:
> On Tue, 2 Feb 2021 15:55:41 +0200 Leon Romanovsky wrote:
> > From: Leon Romanovsky <[email protected]>
> >
> > The W=1 compilation of allmodconfig generates the following warning:
> >
> > net/ipv6/icmp.c:448:6: warning: no previous prototype for 'icmp6_send' [-Wmissing-prototypes]
> > 448 | void icmp6_send(struct sk_buff *skb, u8 type, u8 code, __u32 info,
> > | ^~~~~~~~~~
> >
> > In such configuration, the icmp6_send() is not used outside of icmp.c, so close
> > its EXPORT_SYMBOL and add "static" word to limit the scope.
> >
> > Fixes: cc7a21b6fbd9 ("ipv6: icmp6: avoid indirect call for icmpv6_send()")
> > Signed-off-by: Leon Romanovsky <[email protected]>
>
> That's a little much ifdefinery, why not move the declaration from
> under the ifdef in the header instead?

We will find ourselves with exported but not used function, it will
increase symbol file, not big deal but not nice, either.

>
> If you repost please target net-next, admittedly these fixes are pretty
> "obviously correct" but they are not urgent either.

I'll do.

Thanks

2021-02-03 00:55:41

by Jakub Kicinski

[permalink] [raw]
Subject: Re: [PATCH net 1/4] ipv6: silence compilation warning for non-IPV6 builds

On Tue, 2 Feb 2021 20:55:28 +0200 Leon Romanovsky wrote:
> On Tue, Feb 02, 2021 at 08:29:09AM -0800, Jakub Kicinski wrote:
> > On Tue, 2 Feb 2021 15:55:41 +0200 Leon Romanovsky wrote:
> > > From: Leon Romanovsky <[email protected]>
> > >
> > > The W=1 compilation of allmodconfig generates the following warning:
> > >
> > > net/ipv6/icmp.c:448:6: warning: no previous prototype for 'icmp6_send' [-Wmissing-prototypes]
> > > 448 | void icmp6_send(struct sk_buff *skb, u8 type, u8 code, __u32 info,
> > > | ^~~~~~~~~~
> > >
> > > In such configuration, the icmp6_send() is not used outside of icmp.c, so close
> > > its EXPORT_SYMBOL and add "static" word to limit the scope.
> > >
> > > Fixes: cc7a21b6fbd9 ("ipv6: icmp6: avoid indirect call for icmpv6_send()")
> > > Signed-off-by: Leon Romanovsky <[email protected]>
> >
> > That's a little much ifdefinery, why not move the declaration from
> > under the ifdef in the header instead?
>
> We will find ourselves with exported but not used function, it will
> increase symbol file, not big deal but not nice, either.

For those all so common builds where IPv6 is a module :)
But I don't feel strongly, up to you.

> > If you repost please target net-next, admittedly these fixes are pretty
> > "obviously correct" but they are not urgent either.
>
> I'll do.

Thanks!