Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild
[cascardo/linux.git] / net / ipv4 / netfilter / nf_conntrack_l3proto_ipv4_compat.c
index c6f3c40..6392371 100644 (file)
@@ -26,6 +26,8 @@
 
 struct ct_iter_state {
        struct seq_net_private p;
+       struct hlist_nulls_head *hash;
+       unsigned int htable_size;
        unsigned int bucket;
 };
 
@@ -35,10 +37,10 @@ static struct hlist_nulls_node *ct_get_first(struct seq_file *seq)
        struct hlist_nulls_node *n;
 
        for (st->bucket = 0;
-            st->bucket < nf_conntrack_htable_size;
+            st->bucket < st->htable_size;
             st->bucket++) {
                n = rcu_dereference(
-                       hlist_nulls_first_rcu(&nf_conntrack_hash[st->bucket]));
+                       hlist_nulls_first_rcu(&st->hash[st->bucket]));
                if (!is_a_nulls(n))
                        return n;
        }
@@ -53,11 +55,11 @@ static struct hlist_nulls_node *ct_get_next(struct seq_file *seq,
        head = rcu_dereference(hlist_nulls_next_rcu(head));
        while (is_a_nulls(head)) {
                if (likely(get_nulls_value(head) == st->bucket)) {
-                       if (++st->bucket >= nf_conntrack_htable_size)
+                       if (++st->bucket >= st->htable_size)
                                return NULL;
                }
                head = rcu_dereference(
-                       hlist_nulls_first_rcu(&nf_conntrack_hash[st->bucket]));
+                       hlist_nulls_first_rcu(&st->hash[st->bucket]));
        }
        return head;
 }
@@ -75,7 +77,11 @@ static struct hlist_nulls_node *ct_get_idx(struct seq_file *seq, loff_t pos)
 static void *ct_seq_start(struct seq_file *seq, loff_t *pos)
        __acquires(RCU)
 {
+       struct ct_iter_state *st = seq->private;
+
        rcu_read_lock();
+
+       nf_conntrack_get_ht(&st->hash, &st->htable_size);
        return ct_get_idx(seq, *pos);
 }