Subject: Re: linux-next: Tree for Oct 1 (ipvs)

From: Simon Horman <[email-masked]>
Date: Fri, 2 Oct 2015 09:45:49 +0900

Hi Randy,

On Thu, Oct 01, 2015 at 10:26:14AM -0700, Randy Dunlap wrote:
> On 09/30/15 23:50, Stephen Rothwell wrote:
> > Hi all,
> > 
> > Changes since 20150930:
> > 
> 
> on x86_64:
> 
> ../net/netfilter/ipvs/ip_vs_core.c: In function 'ip_vs_leave':
> ../net/netfilter/ipvs/ip_vs_core.c:584:6: error: implicit declaration of function 'ip_vs_addr_is_unicast' [-Werror=implicit-function-declaration]
>       ip_vs_addr_is_unicast(net, svc->af, &iph->daddr)) {
>       ^
> ../net/netfilter/ipvs/ip_vs_core.c: In function 'ip_vs_out':
> ../net/netfilter/ipvs/ip_vs_core.c:1177:14: warning: unused variable 'net' [-Wunused-variable]
>   struct net *net = ipvs->net;

Thanks for reporting this problem.

I have the following patch queued up in the ipvs-next tree
and plan to send a pull request for it later today.

From: "Eric W. Biederman" <[email-masked]>
Subject: [PATCH] ipvs: Don't protect ip_vs_addr_is_unicast with CONFIG_SYSCTL

I arranged the code so that the compiler can remove the unecessary bits
in ip_vs_leave when CONFIG_SYSCTL is unset, and removed an explicit
CONFIG_SYSCTL.

Unfortunately when rebasing my work on top of that of Alex Gartrell I
missed the fact that the newly added function ip_vs_addr_is_unicast was
surrounded by CONFIG_SYSCTL.

So remove the now unnecessary CONFIG_SYSCTL guards around
ip_vs_addr_is_unicast.  It is causing build failures today when
CONFIG_SYSCTL is not selected and any self respecting compiler will
notice that sysctl_cache_bypass is always false without CONFIG_SYSCTL
and not include the logic from the function ip_vs_addr_is_unicast in
the compiled code.

Signed-off-by: "Eric W. Biederman" <[email-masked]>
Acked-by: Julian Anastasov <[email-masked]>
Signed-off-by: Simon Horman <[email-masked]>
---
 net/netfilter/ipvs/ip_vs_core.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/net/netfilter/ipvs/ip_vs_core.c b/net/netfilter/ipvs/ip_vs_core.c
index 37dd77a3d0fb..d08df435c2aa 100644
--- a/net/netfilter/ipvs/ip_vs_core.c
+++ b/net/netfilter/ipvs/ip_vs_core.c
@@ -547,7 +547,6 @@ ip_vs_schedule(struct ip_vs_service *svc, struct sk_buff *skb,
 	return cp;
 }
 
-#ifdef CONFIG_SYSCTL
 static inline int ip_vs_addr_is_unicast(struct net *net, int af,
 					union nf_inet_addr *addr)
 {
@@ -557,7 +556,6 @@ static inline int ip_vs_addr_is_unicast(struct net *net, int af,
 #endif
 	return (inet_addr_type(net, addr->ip) == RTN_UNICAST);
 }
-#endif
 
 /*
  *  Pass or drop the packet.
-- 
2.1.4