[PATCH net 0/4] Fix W=1 compilation warnings in net/* folder
STALE2039d
Revision v1 of 3 in this series.
14 messages,
3 authors,
2021-02-02 · open the first message on its own page
From: Leon Romanovsky <leonro@nvidia.com>
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
From: Leon Romanovsky <leonro@nvidia.com>
Fix the following compilation warnings:
net/netfilter/ipvs/ip_vs_proto_tcp.c:147:1: warning: no previous prototype for 'tcp_snat_handler' [-Wmissing-prototypes]
147 | tcp_snat_handler(struct sk_buff *skb, struct ip_vs_protocol *pp,
| ^~~~~~~~~~~~~~~~
net/netfilter/ipvs/ip_vs_proto_udp.c:136:1: warning: no previous prototype for 'udp_snat_handler' [-Wmissing-prototypes]
136 | udp_snat_handler(struct sk_buff *skb, struct ip_vs_protocol *pp,
| ^~~~~~~~~~~~~~~~
Fixes: 6ecd754883da ("ipvs: use indirect call wrappers")
Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
---
include/net/ip_vs.h | 11 +++++++++++
net/netfilter/ipvs/ip_vs_core.c | 12 ------------
2 files changed, 11 insertions(+), 12 deletions(-)
diff --git a/include/net/ip_vs.h b/include/net/ip_vs.h
index d609e957a3ec..7cb5a1aace40 100644
--- a/include/net/ip_vs.h
+++ b/include/net/ip_vs.h @@ -1712,4 +1712,15 @@ ip_vs_dest_conn_overhead(struct ip_vs_dest *dest)
atomic_read ( & dest -> inactconns );
}
+ #ifdef CONFIG_IP_VS_PROTO_TCP
+ INDIRECT_CALLABLE_DECLARE ( int
+ tcp_snat_handler ( struct sk_buff * skb , struct ip_vs_protocol * pp ,
+ struct ip_vs_conn * cp , struct ip_vs_iphdr * iph ));
+ #endif
+
+ #ifdef CONFIG_IP_VS_PROTO_UDP
+ INDIRECT_CALLABLE_DECLARE ( int
+ udp_snat_handler ( struct sk_buff * skb , struct ip_vs_protocol * pp ,
+ struct ip_vs_conn * cp , struct ip_vs_iphdr * iph ));
+ #endif
#endif /* _NET_IP_VS_H */ diff --git a/net/netfilter/ipvs/ip_vs_core.c b/net/netfilter/ipvs/ip_vs_core.c
index 54e086c65721..0c132ff9b446 100644
--- a/net/netfilter/ipvs/ip_vs_core.c
+++ b/net/netfilter/ipvs/ip_vs_core.c @@ -68,18 +68,6 @@ EXPORT_SYMBOL(ip_vs_get_debug_level);
#endif
EXPORT_SYMBOL ( ip_vs_new_conn_out );
- #ifdef CONFIG_IP_VS_PROTO_TCP
- INDIRECT_CALLABLE_DECLARE ( int
- tcp_snat_handler ( struct sk_buff * skb , struct ip_vs_protocol * pp ,
- struct ip_vs_conn * cp , struct ip_vs_iphdr * iph ));
- #endif
-
- #ifdef CONFIG_IP_VS_PROTO_UDP
- INDIRECT_CALLABLE_DECLARE ( int
- udp_snat_handler ( struct sk_buff * skb , struct ip_vs_protocol * pp ,
- struct ip_vs_conn * cp , struct ip_vs_iphdr * iph ));
- #endif
-
#if defined(CONFIG_IP_VS_PROTO_TCP) && defined(CONFIG_IP_VS_PROTO_UDP)
#define SNAT_CALL(f, ...) \
INDIRECT_CALL_2 ( f , tcp_snat_handler , udp_snat_handler , __VA_ARGS__ )
- - 2.29.2
From: Leon Romanovsky <leonro@nvidia.com>
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 <leonro@nvidia.com>
---
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
From: Leon Romanovsky <leonro@nvidia.com>
Fir the following compilation warnings:
1031 | INDIRECT_CALLABLE_SCOPE void udp_v6_early_demux(struct sk_buff *skb)
net/ipv6/ip6_offload.c:182:41: warning: no previous prototype for ‘ipv6_gro_receive’ [-Wmissing-prototypes]
182 | INDIRECT_CALLABLE_SCOPE struct sk_buff *ipv6_gro_receive(struct list_head *head,
| ^~~~~~~~~~~~~~~~
net/ipv6/ip6_offload.c:320:29: warning: no previous prototype for ‘ipv6_gro_complete’ [-Wmissing-prototypes]
320 | INDIRECT_CALLABLE_SCOPE int ipv6_gro_complete(struct sk_buff *skb, int nhoff)
| ^~~~~~~~~~~~~~~~~
net/ipv6/ip6_offload.c:182:41: warning: no previous prototype for ‘ipv6_gro_receive’ [-Wmissing-prototypes]
182 | INDIRECT_CALLABLE_SCOPE struct sk_buff *ipv6_gro_receive(struct list_head *head,
| ^~~~~~~~~~~~~~~~
net/ipv6/ip6_offload.c:320:29: warning: no previous prototype for ‘ipv6_gro_complete’ [-Wmissing-prototypes]
320 | INDIRECT_CALLABLE_SCOPE int ipv6_gro_complete(struct sk_buff *skb, int nhoff)
Fixes: aaa5d90b395a ("net: use indirect call wrappers at GRO network layer")
Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
---
include/net/ipv6.h | 3 +++
net/core/dev.c | 4 +---
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/include/net/ipv6.h b/include/net/ipv6.h
index bd1f396cc9c7..68676e6bd4b1 100644
--- a/include/net/ipv6.h
+++ b/include/net/ipv6.h @@ -1265,4 +1265,7 @@ static inline void ip6_sock_set_recvpktinfo(struct sock *sk)
release_sock ( sk );
}
+ INDIRECT_CALLABLE_DECLARE ( struct sk_buff * ipv6_gro_receive ( struct list_head * ,
+ struct sk_buff * ));
+ INDIRECT_CALLABLE_DECLARE ( int ipv6_gro_complete ( struct sk_buff * , int ));
#endif /* _NET_IPV6_H */ diff --git a/net/core/dev.c b/net/core/dev.c
index c360bb5367e2..9a3d8768524b 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c @@ -101,6 +101,7 @@
#include <net/dsa.h>
#include <net/dst.h>
#include <net/dst_metadata.h>
+ #include <net/ipv6.h>
#include <net/pkt_sched.h>
#include <net/pkt_cls.h>
#include <net/checksum.h> @@ -5743,7 +5744,6 @@ static void gro_normal_one(struct napi_struct *napi, struct sk_buff *skb)
}
INDIRECT_CALLABLE_DECLARE ( int inet_gro_complete ( struct sk_buff * , int ));
- INDIRECT_CALLABLE_DECLARE ( int ipv6_gro_complete ( struct sk_buff * , int ));
static int napi_gro_complete ( struct napi_struct * napi , struct sk_buff * skb )
{
struct packet_offload * ptype ; @@ -5914,8 +5914,6 @@ static void gro_flush_oldest(struct napi_struct *napi, struct list_head *head)
INDIRECT_CALLABLE_DECLARE ( struct sk_buff * inet_gro_receive ( struct list_head * ,
struct sk_buff * ));
- INDIRECT_CALLABLE_DECLARE ( struct sk_buff * ipv6_gro_receive ( struct list_head * ,
- struct sk_buff * ));
static enum gro_result dev_gro_receive ( struct napi_struct * napi , struct sk_buff * skb )
{
u32 hash = skb_get_hash_raw ( skb ) & ( GRO_HASH_BUCKETS - 1 );
- - 2.29.2
From: Leon Romanovsky <leonro@nvidia.com>
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 <leonro@nvidia.com>
---
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
On Tue, Feb 2, 2021 at 2:55 PM Leon Romanovsky [off-list ref] wrote:
From: Leon Romanovsky <leonro@nvidia.com>
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.
On Tue, Feb 02, 2021 at 03:34:37PM +0100, Eric Dumazet wrote: On Tue, Feb 2, 2021 at 2:55 PM Leon Romanovsky [off-list ref] wrote: quoted
From: Leon Romanovsky <leonro@nvidia.com>
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
On Tue, Feb 2, 2021 at 2:56 PM Leon Romanovsky [off-list ref] wrote: quoted hunk
From: Leon Romanovsky <leonro@nvidia.com>
Fir the following compilation warnings:
1031 | INDIRECT_CALLABLE_SCOPE void udp_v6_early_demux(struct sk_buff *skb)
net/ipv6/ip6_offload.c:182:41: warning: no previous prototype for ‘ipv6_gro_receive’ [-Wmissing-prototypes]
182 | INDIRECT_CALLABLE_SCOPE struct sk_buff *ipv6_gro_receive(struct list_head *head,
| ^~~~~~~~~~~~~~~~
net/ipv6/ip6_offload.c:320:29: warning: no previous prototype for ‘ipv6_gro_complete’ [-Wmissing-prototypes]
320 | INDIRECT_CALLABLE_SCOPE int ipv6_gro_complete(struct sk_buff *skb, int nhoff)
| ^~~~~~~~~~~~~~~~~
net/ipv6/ip6_offload.c:182:41: warning: no previous prototype for ‘ipv6_gro_receive’ [-Wmissing-prototypes]
182 | INDIRECT_CALLABLE_SCOPE struct sk_buff *ipv6_gro_receive(struct list_head *head,
| ^~~~~~~~~~~~~~~~
net/ipv6/ip6_offload.c:320:29: warning: no previous prototype for ‘ipv6_gro_complete’ [-Wmissing-prototypes]
320 | INDIRECT_CALLABLE_SCOPE int ipv6_gro_complete(struct sk_buff *skb, int nhoff)
Fixes: aaa5d90b395a ("net: use indirect call wrappers at GRO network layer")
Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
---
include/net/ipv6.h | 3 +++
net/core/dev.c | 4 +---
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/include/net/ipv6.h b/include/net/ipv6.h
index bd1f396cc9c7..68676e6bd4b1 100644
--- a/include/net/ipv6.h
+++ b/include/net/ipv6.h @@ -1265,4 +1265,7 @@ static inline void ip6_sock_set_recvpktinfo(struct sock *sk)
release_sock ( sk );
}
+ INDIRECT_CALLABLE_DECLARE ( struct sk_buff * ipv6_gro_receive ( struct list_head * ,
+ struct sk_buff * ));
+ INDIRECT_CALLABLE_DECLARE ( int ipv6_gro_complete ( struct sk_buff * , int ));
I think we should move this to a new include file.
These declarations were static, and had to be made public only because
of DIRECT call stuff,
which is an implementation detail.
Polluting include/net/ipv6.h seems not appropriate.
quoted hunk #endif /* _NET_IPV6_H */ diff --git a/net/core/dev.c b/net/core/dev.c
index c360bb5367e2..9a3d8768524b 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c @@ -101,6 +101,7 @@
#include <net/dsa.h>
#include <net/dst.h>
#include <net/dst_metadata.h>
+ #include <net/ipv6.h>
#include <net/pkt_sched.h>
#include <net/pkt_cls.h>
#include <net/checksum.h> @@ -5743,7 +5744,6 @@ static void gro_normal_one(struct napi_struct *napi, struct sk_buff *skb)
}
INDIRECT_CALLABLE_DECLARE ( int inet_gro_complete ( struct sk_buff * , int ));
This is odd.
You move ipv6_gro_complete() but not inet_gro_complete()
I think we should be consistent.
quoted hunk -INDIRECT_CALLABLE_DECLARE(int ipv6_gro_complete(struct sk_buff *, int));
static int napi_gro_complete(struct napi_struct *napi, struct sk_buff *skb)
{
struct packet_offload *ptype; @@ -5914,8 +5914,6 @@ static void gro_flush_oldest(struct napi_struct *napi, struct list_head *head)
INDIRECT_CALLABLE_DECLARE(struct sk_buff *inet_gro_receive(struct list_head *,
struct sk_buff *));
- INDIRECT_CALLABLE_DECLARE(struct sk_buff *ipv6_gro_receive(struct list_head *,
- struct sk_buff *));
static enum gro_result dev_gro_receive(struct napi_struct *napi, struct sk_buff *skb)
{
u32 hash = skb_get_hash_raw(skb) & (GRO_HASH_BUCKETS - 1);
- -2.29.2
On Tue, Feb 2, 2021 at 3:57 PM Leon Romanovsky [off-list ref] wrote:
On Tue, Feb 02, 2021 at 03:34:37PM +0100, Eric Dumazet wrote: quoted On Tue, Feb 2, 2021 at 2:55 PM Leon Romanovsky [off-list ref] wrote: quoted
From: Leon Romanovsky <leonro@nvidia.com>
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.
quoted 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
On Tue, Feb 02, 2021 at 03:59:38PM +0100, Eric Dumazet wrote: On Tue, Feb 2, 2021 at 3:57 PM Leon Romanovsky [off-list ref] wrote: quoted
On Tue, Feb 02, 2021 at 03:34:37PM +0100, Eric Dumazet wrote: quoted On Tue, Feb 2, 2021 at 2:55 PM Leon Romanovsky [off-list ref] wrote: quoted
From: Leon Romanovsky <leonro@nvidia.com>
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.
quoted quoted 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.
quoted
Thanks
On Tue, Feb 02, 2021 at 03:57:07PM +0100, Eric Dumazet wrote: On Tue, Feb 2, 2021 at 2:56 PM Leon Romanovsky [off-list ref] wrote: quoted
From: Leon Romanovsky <leonro@nvidia.com>
Fir the following compilation warnings:
1031 | INDIRECT_CALLABLE_SCOPE void udp_v6_early_demux(struct sk_buff *skb)
net/ipv6/ip6_offload.c:182:41: warning: no previous prototype for ‘ipv6_gro_receive’ [-Wmissing-prototypes]
182 | INDIRECT_CALLABLE_SCOPE struct sk_buff *ipv6_gro_receive(struct list_head *head,
| ^~~~~~~~~~~~~~~~
net/ipv6/ip6_offload.c:320:29: warning: no previous prototype for ‘ipv6_gro_complete’ [-Wmissing-prototypes]
320 | INDIRECT_CALLABLE_SCOPE int ipv6_gro_complete(struct sk_buff *skb, int nhoff)
| ^~~~~~~~~~~~~~~~~
net/ipv6/ip6_offload.c:182:41: warning: no previous prototype for ‘ipv6_gro_receive’ [-Wmissing-prototypes]
182 | INDIRECT_CALLABLE_SCOPE struct sk_buff *ipv6_gro_receive(struct list_head *head,
| ^~~~~~~~~~~~~~~~
net/ipv6/ip6_offload.c:320:29: warning: no previous prototype for ‘ipv6_gro_complete’ [-Wmissing-prototypes]
320 | INDIRECT_CALLABLE_SCOPE int ipv6_gro_complete(struct sk_buff *skb, int nhoff)
Fixes: aaa5d90b395a ("net: use indirect call wrappers at GRO network layer")
Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
---
include/net/ipv6.h | 3 +++
net/core/dev.c | 4 +---
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/include/net/ipv6.h b/include/net/ipv6.h
index bd1f396cc9c7..68676e6bd4b1 100644
--- a/include/net/ipv6.h
+++ b/include/net/ipv6.h @@ -1265,4 +1265,7 @@ static inline void ip6_sock_set_recvpktinfo(struct sock *sk)
release_sock ( sk );
}
+ INDIRECT_CALLABLE_DECLARE ( struct sk_buff * ipv6_gro_receive ( struct list_head * ,
+ struct sk_buff * ));
+ INDIRECT_CALLABLE_DECLARE ( int ipv6_gro_complete ( struct sk_buff * , int ));
I think we should move this to a new include file.
The ipv6_gro_* used in net/core/dev.c and net/ipv6/ip6_offload.c. This
left me with four options:
1. Use existing and already shared file - include/net/ipv6.h
2. Create new header and put it in net/, so include will be something
like that "../new_file.h".
3. Put new header in one of the folders or core/ or ipv6/.
4. Create new file in include/net just for those two lines.
I preferred option #1, which other option do you want me to redo?
These declarations were static, and had to be made public only because
of DIRECT call stuff,
which is an implementation detail.
Polluting include/net/ipv6.h seems not appropriate.
Thanks for the review.
On Tue, 2 Feb 2021 15:55:41 +0200 Leon Romanovsky wrote: From: Leon Romanovsky <leonro@nvidia.com>
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 <leonro@nvidia.com>
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.
quoted hunk 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
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: quoted From: Leon Romanovsky <leonro@nvidia.com>
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 <leonro@nvidia.com>
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
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: quoted On Tue, 2 Feb 2021 15:55:41 +0200 Leon Romanovsky wrote: quoted From: Leon Romanovsky <leonro@nvidia.com>
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 <leonro@nvidia.com>
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.
quoted If you repost please target net-next, admittedly these fixes are pretty
"obviously correct" but they are not urgent either.
I'll do.
Thanks!