From: Mathieu Desnoyers on
Revert "netfilter: don't use INIT_RCU_HEAD()"

This reverts commit ca1c2e2da9637c131436bf6d6ae41b58f5353afe.

If we ever want to be able to properly detect double rcu_head activation, we
need to separate the initialization from call_rcu().

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers(a)efficios.com>
CC: "Paul E. McKenney" <paulmck(a)linux.vnet.ibm.com>
CC: akpm(a)linux-foundation.org
CC: mingo(a)elte.hu
CC: laijs(a)cn.fujitsu.com
CC: dipankar(a)in.ibm.com
CC: josh(a)joshtriplett.org
CC: dvhltc(a)us.ibm.com
CC: niv(a)us.ibm.com
CC: tglx(a)linutronix.de
CC: peterz(a)infradead.org
CC: rostedt(a)goodmis.org
CC: Valdis.Kletnieks(a)vt.edu
CC: dhowells(a)redhat.com
CC: eric.dumazet(a)gmail.com
CC: Alexey Dobriyan <adobriyan(a)gmail.com>

diff --git a/net/netfilter/nf_conntrack_expect.c b/net/netfilter/nf_conntrack_expect.c
index acb29cc..d9f8a22 100644
--- a/net/netfilter/nf_conntrack_expect.c
+++ b/net/netfilter/nf_conntrack_expect.c
@@ -239,6 +239,7 @@ struct nf_conntrack_expect *nf_ct_expect_alloc(struct nf_conn *me)

new->master = me;
atomic_set(&new->use, 1);
+ INIT_RCU_HEAD(&new->rcu);
return new;
}
EXPORT_SYMBOL_GPL(nf_ct_expect_alloc);
diff --git a/net/netfilter/nf_conntrack_extend.c b/net/netfilter/nf_conntrack_extend.c
index fdc8fb4..fef95be 100644
--- a/net/netfilter/nf_conntrack_extend.c
+++ b/net/netfilter/nf_conntrack_extend.c
@@ -59,6 +59,7 @@ nf_ct_ext_create(struct nf_ct_ext **ext, enum nf_ct_ext_id id, gfp_t gfp)
if (!*ext)
return NULL;

+ INIT_RCU_HEAD(&(*ext)->rcu);
(*ext)->offset[id] = off;
(*ext)->len = len;

diff --git a/net/netfilter/nfnetlink_queue.c b/net/netfilter/nfnetlink_queue.c
index 7ba4abc..90cf36d 100644
--- a/net/netfilter/nfnetlink_queue.c
+++ b/net/netfilter/nfnetlink_queue.c
@@ -112,6 +112,7 @@ instance_create(u_int16_t queue_num, int pid)
inst->copy_mode = NFQNL_COPY_NONE;
spin_lock_init(&inst->lock);
INIT_LIST_HEAD(&inst->queue_list);
+ INIT_RCU_HEAD(&inst->rcu);

if (!try_module_get(THIS_MODULE)) {
err = -EAGAIN;

--
Mathieu Desnoyers
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/