Skip to content
  • Arnd Bergmann's avatar
    ipv6 sit: work around bogus gcc-8 -Wrestrict warning · c3d7d3a0
    Arnd Bergmann authored
    
    [ Upstream commit ca79bec2 ]
    
    gcc-8 has a new warning that detects overlapping input and output arguments
    in memcpy(). It triggers for sit_init_net() calling ipip6_tunnel_clone_6rd(),
    which is actually correct:
    
    net/ipv6/sit.c: In function 'sit_init_net':
    net/ipv6/sit.c:192:3: error: 'memcpy' source argument is the same as destination [-Werror=restrict]
    
    The problem here is that the logic detecting the memcpy() arguments finds them
    to be the same, but the conditional that tests for the input and output of
    ipip6_tunnel_clone_6rd() to be identical is not a compile-time constant.
    
    We know that netdev_priv(t->dev) is the same as t for a tunnel device,
    and comparing "dev" directly here lets the compiler figure out as well
    that 'dev == sitn->fb_tunnel_dev' when called from sit_init_net(), so
    it no longer warns.
    
    This code is old, so Cc stable to make sure that we don't get the warning
    for older kernels built with new gcc.
    
    Cc: Martin Sebor <msebor@gmail.com>
    Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83456
    
    
    Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    c3d7d3a0