]> Pileus Git - ~andy/linux/commitdiff
ipv6: don't count addrconf generated routes against gc limit
authorHannes Frederic Sowa <hannes@stressinduktion.org>
Sat, 7 Dec 2013 02:33:45 +0000 (03:33 +0100)
committerDavid S. Miller <davem@davemloft.net>
Tue, 10 Dec 2013 02:00:39 +0000 (21:00 -0500)
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>
net/ipv6/route.c

index ddb9d41c8eea34845413cc112a7ce832e160f4e2..a0a48ac3403f3a9284786aa5b8f00dc03696e2e0 100644 (file)
@@ -2166,12 +2166,10 @@ struct rt6_info *addrconf_dst_alloc(struct inet6_dev *idev,
                                    bool anycast)
 {
        struct net *net = dev_net(idev->dev);
-       struct rt6_info *rt = ip6_dst_alloc(net, net->loopback_dev, 0, NULL);
-
-       if (!rt) {
-               net_warn_ratelimited("Maximum number of routes reached, consider increasing route/max_size\n");
+       struct rt6_info *rt = ip6_dst_alloc(net, net->loopback_dev,
+                                           DST_NOCOUNT, NULL);
+       if (!rt)
                return ERR_PTR(-ENOMEM);
-       }
 
        in6_dev_hold(idev);