diff options
Diffstat (limited to 'main/linux-grsec/0004-ipv4-rate-limit-updating-of-next-hop-exceptions-with.patch')
-rw-r--r-- | main/linux-grsec/0004-ipv4-rate-limit-updating-of-next-hop-exceptions-with.patch | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/main/linux-grsec/0004-ipv4-rate-limit-updating-of-next-hop-exceptions-with.patch b/main/linux-grsec/0004-ipv4-rate-limit-updating-of-next-hop-exceptions-with.patch new file mode 100644 index 0000000000..9b2ad89132 --- /dev/null +++ b/main/linux-grsec/0004-ipv4-rate-limit-updating-of-next-hop-exceptions-with.patch @@ -0,0 +1,37 @@ +From 90f586dba1465a73295d752abe2451e924ba1888 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi> +Date: Mon, 27 May 2013 08:33:10 +0300 +Subject: [PATCH 4/6] ipv4: rate limit updating of next hop exceptions with + same pmtu +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The tunnel devices call update_pmtu for each packet sent, this causes +contention on the fnhe_lock. Ignore the pmtu update if pmtu is not +actually changed, and there is still plenty of time before the entry +expires. + +Signed-off-by: Timo Teräs <timo.teras@iki.fi> +--- + net/ipv4/route.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/net/ipv4/route.c b/net/ipv4/route.c +index 8dedfeb..85b9c07 100644 +--- a/net/ipv4/route.c ++++ b/net/ipv4/route.c +@@ -947,6 +947,10 @@ static void __ip_rt_update_pmtu(struct rtable *rt, struct flowi4 *fl4, u32 mtu) + if (mtu < ip_rt_min_pmtu) + mtu = ip_rt_min_pmtu; + ++ if (rt->rt_pmtu == mtu && ++ time_before(jiffies, dst->expires - ip_rt_mtu_expires / 2)) ++ return; ++ + rcu_read_lock(); + if (fib_lookup(dev_net(dst->dev), fl4, &res) == 0) { + struct fib_nh *nh = &FIB_RES_NH(res); +-- +1.8.2.3 + |