aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv6/route.c
diff options
context:
space:
mode:
authorHannes Frederic Sowa <hannes@stressinduktion.org>2013-12-06 21:33:45 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2014-01-15 18:28:47 -0500
commite28c2d64f8b676b7defe6a3f25aa80269aa49c7e (patch)
tree6edf25fc3f31e8bdb21dbfac254375ba6f72d020 /net/ipv6/route.c
parentc3ac8a134305ed1522d8987e62249a85efb09c98 (diff)
ipv6: don't count addrconf generated routes against gc limit
[ Upstream commit a3300ef4bbb1f1e33ff0400e1e6cf7733d988f4f ] Brett Ciphery reported that new ipv6 addresses failed to get installed because the addrconf generated dsts where counted against the dst gc limit. We don't need to count those routes like we currently don't count administratively added routes. Because the max_addresses check enforces a limit on unbounded address generation first in case someone plays with router advertisments, we are still safe here. Reported-by: Brett Ciphery <brett.ciphery@windriver.com> Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'net/ipv6/route.c')
-rw-r--r--net/ipv6/route.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/net/ipv6/route.c b/net/ipv6/route.c
index 8a8ae819c1d8..566c1b4b21b8 100644
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
@@ -2099,12 +2099,10 @@ struct rt6_info *addrconf_dst_alloc(struct inet6_dev *idev,
2099 bool anycast) 2099 bool anycast)
2100{ 2100{
2101 struct net *net = dev_net(idev->dev); 2101 struct net *net = dev_net(idev->dev);
2102 struct rt6_info *rt = ip6_dst_alloc(net, net->loopback_dev, 0, NULL); 2102 struct rt6_info *rt = ip6_dst_alloc(net, net->loopback_dev,
2103 2103 DST_NOCOUNT, NULL);
2104 if (!rt) { 2104 if (!rt)
2105 net_warn_ratelimited("Maximum number of routes reached, consider increasing route/max_size\n");
2106 return ERR_PTR(-ENOMEM); 2105 return ERR_PTR(-ENOMEM);
2107 }
2108 2106
2109 in6_dev_hold(idev); 2107 in6_dev_hold(idev);
2110 2108