[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <1391444524.28432.99.camel@edumazet-glaptop2.roam.corp.google.com>
Date: Mon, 03 Feb 2014 08:22:04 -0800
From: Eric Dumazet <eric.dumazet@...il.com>
To: Pablo Neira Ayuso <pablo@...filter.org>
Cc: Florian Westphal <fw@...len.de>,
Andrew Vagin <avagin@...allels.com>,
Andrey Vagin <avagin@...nvz.org>,
netfilter-devel@...r.kernel.org, netfilter@...r.kernel.org,
netdev@...r.kernel.org, linux-kernel@...r.kernel.org,
vvs@...nvz.org, Cyrill Gorcunov <gorcunov@...nvz.org>,
Vasiliy Averin <vvs@...allels.com>
Subject: Re: [PATCH] [RFC] netfilter: nf_conntrack: don't relase a conntrack
with non-zero refcnt
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 netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists