2020-03-30 03:21:34

by Haishuang Yan

[permalink] [raw]
Subject: [PATCH nf-next] ipvs: fix uninitialized variable warning

If outer_proto is not set, GCC warning as following:

In file included from net/netfilter/ipvs/ip_vs_core.c:52:
net/netfilter/ipvs/ip_vs_core.c: In function 'ip_vs_in_icmp':
include/net/ip_vs.h:233:4: warning: 'outer_proto' may be used uninitialized in this function [-Wmaybe-uninitialized]
233 | printk(KERN_DEBUG pr_fmt(msg), ##__VA_ARGS__); \
| ^~~~~~
net/netfilter/ipvs/ip_vs_core.c:1666:8: note: 'outer_proto' was declared here
1666 | char *outer_proto;
| ^~~~~~~~~~~

Fixes: 73348fed35d0 ("ipvs: optimize tunnel dumps for icmp errors")
Signed-off-by: Haishuang Yan <[email protected]>
---
net/netfilter/ipvs/ip_vs_core.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/net/netfilter/ipvs/ip_vs_core.c b/net/netfilter/ipvs/ip_vs_core.c
index d2ac530..aa6a603 100644
--- a/net/netfilter/ipvs/ip_vs_core.c
+++ b/net/netfilter/ipvs/ip_vs_core.c
@@ -1663,7 +1663,7 @@ static int ipvs_gre_decap(struct netns_ipvs *ipvs, struct sk_buff *skb,
unsigned int offset, offset2, ihl, verdict;
bool tunnel, new_cp = false;
union nf_inet_addr *raddr;
- char *outer_proto;
+ char *outer_proto = "IPIP";

*related = 1;

@@ -1723,7 +1723,6 @@ static int ipvs_gre_decap(struct netns_ipvs *ipvs, struct sk_buff *skb,
if (cih == NULL)
return NF_ACCEPT; /* The packet looks wrong, ignore */
tunnel = true;
- outer_proto = "IPIP";
} else if ((cih->protocol == IPPROTO_UDP || /* Can be UDP encap */
cih->protocol == IPPROTO_GRE) && /* Can be GRE encap */
/* Error for our tunnel must arrive at LOCAL_IN */
--
1.8.3.1




2020-03-30 07:12:40

by Julian Anastasov

[permalink] [raw]
Subject: Re: [PATCH nf-next] ipvs: fix uninitialized variable warning


Hello,

On Mon, 30 Mar 2020, Haishuang Yan wrote:

> If outer_proto is not set, GCC warning as following:
>
> In file included from net/netfilter/ipvs/ip_vs_core.c:52:
> net/netfilter/ipvs/ip_vs_core.c: In function 'ip_vs_in_icmp':
> include/net/ip_vs.h:233:4: warning: 'outer_proto' may be used uninitialized in this function [-Wmaybe-uninitialized]
> 233 | printk(KERN_DEBUG pr_fmt(msg), ##__VA_ARGS__); \
> | ^~~~~~
> net/netfilter/ipvs/ip_vs_core.c:1666:8: note: 'outer_proto' was declared here
> 1666 | char *outer_proto;
> | ^~~~~~~~~~~
>
> Fixes: 73348fed35d0 ("ipvs: optimize tunnel dumps for icmp errors")
> Signed-off-by: Haishuang Yan <[email protected]>

Acked-by: Julian Anastasov <[email protected]>

Hm, my compiler does not report it: gcc version 9.1.1

> ---
> net/netfilter/ipvs/ip_vs_core.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/net/netfilter/ipvs/ip_vs_core.c b/net/netfilter/ipvs/ip_vs_core.c
> index d2ac530..aa6a603 100644
> --- a/net/netfilter/ipvs/ip_vs_core.c
> +++ b/net/netfilter/ipvs/ip_vs_core.c
> @@ -1663,7 +1663,7 @@ static int ipvs_gre_decap(struct netns_ipvs *ipvs, struct sk_buff *skb,
> unsigned int offset, offset2, ihl, verdict;
> bool tunnel, new_cp = false;
> union nf_inet_addr *raddr;
> - char *outer_proto;
> + char *outer_proto = "IPIP";
>
> *related = 1;
>
> @@ -1723,7 +1723,6 @@ static int ipvs_gre_decap(struct netns_ipvs *ipvs, struct sk_buff *skb,
> if (cih == NULL)
> return NF_ACCEPT; /* The packet looks wrong, ignore */
> tunnel = true;
> - outer_proto = "IPIP";
> } else if ((cih->protocol == IPPROTO_UDP || /* Can be UDP encap */
> cih->protocol == IPPROTO_GRE) && /* Can be GRE encap */
> /* Error for our tunnel must arrive at LOCAL_IN */
> --
> 1.8.3.1

Regards

--
Julian Anastasov <[email protected]>