Re: [PATCH] [RFC] netfilter: nf_conntrack: don't relase a conntrackwith non-zero refcnt

From: Eric Dumazet
Date: Mon Feb 03 2014 - 11:22:19 EST


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 !


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/