aboutsummaryrefslogtreecommitdiffstats
path: root/main/linux-grsec/v2-net-next-arp-flush-arp-cache-on-IFF_NOARP-change.patch
diff options
context:
space:
mode:
Diffstat (limited to 'main/linux-grsec/v2-net-next-arp-flush-arp-cache-on-IFF_NOARP-change.patch')
-rw-r--r--main/linux-grsec/v2-net-next-arp-flush-arp-cache-on-IFF_NOARP-change.patch89
1 files changed, 0 insertions, 89 deletions
diff --git a/main/linux-grsec/v2-net-next-arp-flush-arp-cache-on-IFF_NOARP-change.patch b/main/linux-grsec/v2-net-next-arp-flush-arp-cache-on-IFF_NOARP-change.patch
deleted file mode 100644
index 0fdafec17e..0000000000
--- a/main/linux-grsec/v2-net-next-arp-flush-arp-cache-on-IFF_NOARP-change.patch
+++ /dev/null
@@ -1,89 +0,0 @@
-From patchwork Tue May 21 10:23:44 2013
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 8bit
-Subject: [v2,net-next] arp: flush arp cache on IFF_NOARP change
-Date: Tue, 21 May 2013 00:23:44 -0000
-From: =?utf-8?q?Timo_Ter=C3=A4s?= <timo.teras@iki.fi>
-X-Patchwork-Id: 245256
-Message-Id: <1369131824-6318-1-git-send-email-timo.teras@iki.fi>
-To: David Miller <davem@davemloft.net>, netdev@vger.kernel.org, kaber@trash.net
-Cc: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi>
-
-IFF_NOARP affects what kind of neighbor entries are created
-(nud NOARP or nud INCOMPLETE). If the flag changes, flush the arp
-cache to refresh all entries.
-
-Signed-off-by: Timo Teräs <timo.teras@iki.fi>
-
----
-> This patch makes no sense at all.
->
-> The state bit in ->priv_flags is a boolean stating whether the
-> notified should do something or not.
->
-> But you're setting it to match what IFF_NOARP is.
->
-> You should set it any time IFF_NOARP _changes_, and then clear
-> the bit when the notifier clears the neighbour entries.
-
-IFF_NOARP_CHANGED is set according to "changes = dev->flags ^ old_flags;"
-which reflect the change. But I agree that the clearing out bit was
-misplaced. This is especially true as it seems NETDEV_CHANGE can be
-notified from another place too.
-
-I've updated the if.h comment to state that the bit is valid only during
-NETDEV_CHANGE notifier. And __dev_notify_flags is updated to always clear
-the bit after notifiers are done.
-
- include/uapi/linux/if.h | 2 ++
- net/core/dev.c | 6 +++++-
- net/ipv4/arp.c | 4 ++++
- 3 files changed, 11 insertions(+), 1 deletion(-)
-
-diff --git a/include/uapi/linux/if.h b/include/uapi/linux/if.h
-index 1ec407b..1be8b35 100644
---- a/include/uapi/linux/if.h
-+++ b/include/uapi/linux/if.h
-@@ -83,6 +83,8 @@
- #define IFF_SUPP_NOFCS 0x80000 /* device supports sending custom FCS */
- #define IFF_LIVE_ADDR_CHANGE 0x100000 /* device supports hardware address
- * change when it's running */
-+#define IFF_NOARP_CHANGED 0x200000 /* Set during NETDEV_CHANGE notifier
-+ * if IFF_NOARP has changed */
-
-
- #define IF_GET_IFACE 0x0001 /* for querying only */
-diff --git a/net/core/dev.c b/net/core/dev.c
-index 18e9730..ce30761 100644
---- a/net/core/dev.c
-+++ b/net/core/dev.c
-@@ -4699,8 +4699,12 @@ void __dev_notify_flags(struct net_device *dev, unsigned int old_flags)
- }
-
- if (dev->flags & IFF_UP &&
-- (changes & ~(IFF_UP | IFF_PROMISC | IFF_ALLMULTI | IFF_VOLATILE)))
-+ (changes & ~(IFF_UP | IFF_PROMISC | IFF_ALLMULTI | IFF_VOLATILE))) {
-+ if (changes & IFF_NOARP)
-+ dev->priv_flags |= IFF_NOARP_CHANGED;
- call_netdevice_notifiers(NETDEV_CHANGE, dev);
-+ dev->priv_flags &= ~IFF_NOARP_CHANGED;
-+ }
- }
-
- /**
-diff --git a/net/ipv4/arp.c b/net/ipv4/arp.c
-index 247ec19..375b2f2 100644
---- a/net/ipv4/arp.c
-+++ b/net/ipv4/arp.c
-@@ -1241,6 +1241,10 @@ static int arp_netdev_event(struct notifier_block *this, unsigned long event,
- neigh_changeaddr(&arp_tbl, dev);
- rt_cache_flush(dev_net(dev));
- break;
-+ case NETDEV_CHANGE:
-+ if (dev->priv_flags & IFF_NOARP_CHANGED)
-+ neigh_changeaddr(&arp_tbl, dev);
-+ break;
- default:
- break;
- }