|
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.