• Loic Prylli's avatar
    net: Fix NETDEV_CHANGE notifier usage causing spurious arp flush · 54951194
    Loic Prylli authored
    A bug was introduced in NETDEV_CHANGE notifier sequence causing the
    arp table to be sometimes spuriously cleared (including manual arp
    entries marked permanent), upon network link carrier changes.
    
    The changed argument for the notifier was applied only to a single
    caller of NETDEV_CHANGE, missing among others netdev_state_change().
    So upon net_carrier events induced by the network, which are
    triggering a call to netdev_state_change(), arp_netdev_event() would
    decide whether to clear or not arp cache based on random/junk stack
    values (a kind of read buffer overflow).
    
    Fixes: be9efd36 ("net: pass changed flags along with NETDEV_CHANGE event")
    Fixes: 6c8b4e3f ("arp: flush arp cache on IFF_NOARP change")
    Signed-off-by: default avatarLoic Prylli <loicp@google.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    54951194
dev.c 179 KB