]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - net/ipv4/xfrm4_policy.c
Merge tag 'v2.6.37' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[mv-sheeva.git] / net / ipv4 / xfrm4_policy.c
index a580349f0b8ab53c77b04b00d504de0bf1f83e09..4464f3bff6a7a7d902b72806bb9d5e7c1752bf96 100644 (file)
@@ -174,7 +174,7 @@ static inline int xfrm4_garbage_collect(struct dst_ops *ops)
        struct net *net = container_of(ops, struct net, xfrm.xfrm4_dst_ops);
 
        xfrm4_policy_afinfo.garbage_collect(net);
-       return (atomic_read(&ops->entries) > ops->gc_thresh * 2);
+       return (dst_entries_get_slow(ops) > ops->gc_thresh * 2);
 }
 
 static void xfrm4_update_pmtu(struct dst_entry *dst, u32 mtu)
@@ -232,7 +232,6 @@ static struct dst_ops xfrm4_dst_ops = {
        .ifdown =               xfrm4_dst_ifdown,
        .local_out =            __ip_local_out,
        .gc_thresh =            1024,
-       .entries =              ATOMIC_INIT(0),
 };
 
 static struct xfrm_policy_afinfo xfrm4_policy_afinfo = {
@@ -288,6 +287,7 @@ void __init xfrm4_init(int rt_max_size)
         * and start cleaning when were 1/2 full
         */
        xfrm4_dst_ops.gc_thresh = rt_max_size/2;
+       dst_entries_init(&xfrm4_dst_ops);
 
        xfrm4_state_init();
        xfrm4_policy_init();