Re: [PATCH] net: bareudp: avoid uninitialized variable warning

From: David Miller
Date: Thu May 07 2020 - 20:29:08 EST


From: Arnd Bergmann <arnd@xxxxxxxx>
Date: Tue, 5 May 2020 19:22:14 +0200

> clang points out that building without IPv6 would lead to returning
> an uninitialized variable if a packet with family!=AF_INET is
> passed into bareudp_udp_encap_recv():
>
> drivers/net/bareudp.c:139:6: error: variable 'err' is used uninitialized whenever 'if' condition is false [-Werror,-Wsometimes-uninitialized]
> if (family == AF_INET)
> ^~~~~~~~~~~~~~~~~
> drivers/net/bareudp.c:146:15: note: uninitialized use occurs here
> if (unlikely(err)) {
> ^~~
> include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
> # define unlikely(x) __builtin_expect(!!(x), 0)
> ^
> drivers/net/bareudp.c:139:2: note: remove the 'if' if its condition is always true
> if (family == AF_INET)
> ^~~~~~~~~~~~~~~~~~~~~~
>
> This cannot happen in practice, so change the condition in a way that
> gcc sees the IPv4 case as unconditionally true here.
> For consistency, change all the similar constructs in this file the
> same way, using "if(IS_ENABLED())" instead of #if IS_ENABLED()".
>
> Fixes: 571912c69f0e ("net: UDP tunnel encapsulation module for tunnelling different protocols like MPLS, IP, NSH etc.")
> Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx>

Applied, thanks.