|
|
Message-ID: <20161128124440.GK3174@twins.programming.kicks-ass.net>
Date: Mon, 28 Nov 2016 13:44:40 +0100
From: Peter Zijlstra <peterz@...radead.org>
To: "Reshetova, Elena" <elena.reshetova@...el.com>
Cc: "kernel-hardening@...ts.openwall.com" <kernel-hardening@...ts.openwall.com>,
Greg KH <gregkh@...uxfoundation.org>,
Kees Cook <keescook@...omium.org>,
"will.deacon@....com" <will.deacon@....com>,
Boqun Feng <boqun.feng@...il.com>,
Hans Liljestrand <ishkamiel@...il.com>,
David Windsor <dwindsor@...il.com>, aik@...abs.ru,
david@...son.dropbear.id.au
Subject: Re: Conversion from atomic_t to refcount_t: summary of issues
On Mon, Nov 28, 2016 at 01:13:47PM +0100, Peter Zijlstra wrote:
> On Mon, Nov 28, 2016 at 11:56:17AM +0000, Reshetova, Elena wrote:
> > - if (atomic_cmpxchg(&p->refcnt, 0, -1) == 0) {..} (typical for networking code)
>
> That's really weird, a refcount of -1 doesn't really make sense.
I looked at the one in inetpeer.c, and I think we can simply do +1 on
the entire refcount scheme and it'll work.
There is no dec_and_test anywhere, the only one doing deletion is that
GC. If that were to do dec_if_one(), then lookup_rcu() can do the normal
inc_not_zero().
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.