Messages in this thread | | | Subject | Re: [PATCH] [RFC] netfilter: nf_conntrack: don't relase a conntrack with non-zero refcnt | From | Eric Dumazet <> | Date | Mon, 03 Feb 2014 08:22:04 -0800 |
| |
On Mon, 2014-02-03 at 00:30 +0100, Pablo Neira Ayuso wrote: > */ > smp_wmb(); > - atomic_set(&ct->ct_general.use, 1); > + atomic_set(&ct->ct_general.use, 0); > return ct;
Hi Pablo !
I think your patch is the way to go, but might need some extra care with memory barriers.
I believe the smp_wmb() here is no longer needed.
If its a newly allocated memory, no other users can access to ct, if its a recycled ct, content is already 0 anyway.
After your patch, nf_conntrack_get(&tmpl->ct_general) should increment an already non zero refcnt, so no memory barrier is needed.
But one smp_wmb() is needed right before this point :
/* The caller holds a reference to this object */ atomic_set(&ct->ct_general.use, 2);
Thanks !
| |