Re: [PATCH v3 10/10] nf_conntrack: Use rcu_barrier()

Patrick McHardy
2009-06-25T14:32:49Z

Jesper Dangaard Brouer wrote:
> RCU barriers, rcu_barrier(), is inserted two places.
>
> In nf_conntrack_expect.c nf_conntrack_expect_fini() before the
> kmem_cache_destroy(). Firstly to make sure the callback to the
> nf_ct_expect_free_rcu() code is still around. Secondly because I'm
> unsure about the consequence of having in flight
> nf_ct_expect_free_rcu/kmem_cache_free() calls while doing a
> kmem_cache_destroy() slab destroy.
>
> And in nf_conntrack_extend.c nf_ct_extend_unregister(), inorder to
> wait for completion of callbacks to __nf_ct_ext_free_rcu(), which is
> invoked by __nf_ct_ext_add(). It might be more efficient to call
> rcu_barrier() in nf_conntrack_core.c nf_conntrack_cleanup_net(), but
> thats make it more difficult to read the code (as the callback code
> in located in nf_conntrack_extend.c).

Applied, thanks Jesper.