• Arnd Bergmann's avatar
    net: bareudp: avoid uninitialized variable warning · ee287556
    Arnd Bergmann authored
    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: 571912c6 ("net: UDP tunnel encapsulation module for tunnelling different protocols like MPLS, IP, NSH etc.")
    Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    Reviewed-by: default avatarNathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    ee287556
bareudp.c 20.2 KB