Message ID | 3dc917cf6244ef123aa955b2fbbf02473d13cdb5.1736672666.git.geert@linux-m68k.org (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | ipv4: ip_gre: Fix set but not used warning in ipgre_err() if IPv4-only | expand |
From: Geert Uytterhoeven <geert@linux-m68k.org> Date: Sun, 12 Jan 2025 10:05:10 +0100 > @@ -191,8 +189,9 @@ static int ipgre_err(struct sk_buff *skb, u32 info, > > #if IS_ENABLED(CONFIG_IPV6) > if (tpi->proto == htons(ETH_P_IPV6) && > - !ip6_err_gen_icmpv6_unreach(skb, iph->ihl * 4 + tpi->hdr_len, > - type, data_len)) > + !ip6_err_gen_icmpv6_unreach(skb, iph->ihl * 4 + tpi->hdr_len, type, > + type == ICMP_TIME_EXCEEDED ? > + icmp_hdr(skb)->un.reserved[1] * 4 /* RFC 4884 4.1 */ : 0)) > return 0; > #endif No need to pack everything in a single line. ---8<--- #if IS_ENABLED(CONFIG_IPV6) if (tpi->proto == htons(ETH_P_IPV6)) { unsigned int data_len = 0; if (type == ICMP_TIME_EXCEEDED) data_len = icmp_hdr(skb)->un.reserved[1] * 4; /* RFC 4884 4.1 */ if (!ip6_err_gen_icmpv6_unreach(skb, iph->ihl * 4 + tpi->hdr_len, type, data_len) return 0; } #endif ---8<--- For the future submission, please specify the target tree in Subject. [PATCH net-next v2] ... See: Documentation/process/maintainer-netdev.rst Thanks
diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c index f1f31ebfc7934467..6f871af7bb5772b7 100644 --- a/net/ipv4/ip_gre.c +++ b/net/ipv4/ip_gre.c @@ -141,7 +141,6 @@ static int ipgre_err(struct sk_buff *skb, u32 info, const struct iphdr *iph; const int type = icmp_hdr(skb)->type; const int code = icmp_hdr(skb)->code; - unsigned int data_len = 0; struct ip_tunnel *t; if (tpi->proto == htons(ETH_P_TEB)) @@ -182,7 +181,6 @@ static int ipgre_err(struct sk_buff *skb, u32 info, case ICMP_TIME_EXCEEDED: if (code != ICMP_EXC_TTL) return 0; - data_len = icmp_hdr(skb)->un.reserved[1] * 4; /* RFC 4884 4.1 */ break; case ICMP_REDIRECT: @@ -191,8 +189,9 @@ static int ipgre_err(struct sk_buff *skb, u32 info, #if IS_ENABLED(CONFIG_IPV6) if (tpi->proto == htons(ETH_P_IPV6) && - !ip6_err_gen_icmpv6_unreach(skb, iph->ihl * 4 + tpi->hdr_len, - type, data_len)) + !ip6_err_gen_icmpv6_unreach(skb, iph->ihl * 4 + tpi->hdr_len, type, + type == ICMP_TIME_EXCEEDED ? + icmp_hdr(skb)->un.reserved[1] * 4 /* RFC 4884 4.1 */ : 0)) return 0; #endif
if CONFIG_NET_IPGRE is enabled, but CONFIG_IPV6 is disabled: net/ipv4/ip_gre.c: In function ‘ipgre_err’: net/ipv4/ip_gre.c:144:22: error: variable ‘data_len’ set but not used [-Werror=unused-but-set-variable] 144 | unsigned int data_len = 0; | ^~~~~~~~ Fix this by moving all data_len processing inside the IPV6-only section that uses its result. Reported-by: kernel test robot <lkp@intel.com> Closes: https://lore.kernel.org/oe-kbuild-all/202501121007.2GofXmh5-lkp@intel.com/ Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org> --- net/ipv4/ip_gre.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-)