]> git.baikalelectronics.ru Git - kernel.git/commit
net: Fix NETDEV_CHANGE notifier usage causing spurious arp flush
authorLoic Prylli <loicp@google.com>
Wed, 2 Jul 2014 04:39:43 +0000 (21:39 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 8 Jul 2014 04:20:01 +0000 (21:20 -0700)
commit99dea630810a976f622b1612248cdda93a536124
tree2a6401c68307ca4553f5664ad5946bba9b09a47f
parent2d3e7e51029ddcdec2d8d3c18bfd8b1cbc7c421c
net: Fix NETDEV_CHANGE notifier usage causing spurious arp flush

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: c277ae9ec5bb ("net: pass changed flags along with NETDEV_CHANGE event")
Fixes: 96c72cde6313 ("arp: flush arp cache on IFF_NOARP change")
Signed-off-by: Loic Prylli <loicp@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/core/dev.c