[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CA+55aFxjb+2rs2wVHtiSCcOzgMrE8H=yDeNcjyujPQudDCtLgw@mail.gmail.com>
Date: Tue, 26 Jan 2016 14:15:21 -0800
From: Linus Torvalds <torvalds@...ux-foundation.org>
To: Paul McKenney <paulmck@...ux.vnet.ibm.com>
Cc: Peter Zijlstra <peterz@...radead.org>,
Boqun Feng <boqun.feng@...il.com>,
Herbert Xu <herbert@...dor.apana.org.au>,
Leonid Yegoshin <Leonid.Yegoshin@...tec.com>,
linux-mips <linux-mips@...ux-mips.org>,
"linux-ia64@...r.kernel.org" <linux-ia64@...r.kernel.org>,
"Michael S. Tsirkin" <mst@...hat.com>,
Will Deacon <will.deacon@....com>,
virtualization <virtualization@...ts.linux-foundation.org>,
Peter Anvin <hpa@...or.com>, sparclinux@...r.kernel.org,
Ingo Molnar <mingo@...nel.org>,
"linux-arch@...r.kernel.org" <linux-arch@...r.kernel.org>,
linux-s390 <linux-s390@...r.kernel.org>,
Russell King - ARM Linux <linux@....linux.org.uk>,
uml-devel <user-mode-linux-devel@...ts.sourceforge.net>,
linux-sh@...r.kernel.org, Michael Ellerman <mpe@...erman.id.au>,
"the arch/x86 maintainers" <x86@...nel.org>,
xen-devel@...ts.xenproject.org, Ingo Molnar <mingo@...e.hu>,
linux-xtensa@...ux-xtensa.org,
James Hogan <james.hogan@...tec.com>,
Arnd Bergmann <arnd@...db.de>,
Stefano Stabellini <stefano.stabellini@...citrix.com>,
adi-buildroot-devel@...ts.sourceforge.net,
David Daney <ddaney.cavm@...il.com>,
Thomas Gleixner <tglx@...utronix.de>,
linux-metag@...r.kernel.org,
"linux-arm-kernel@...ts.infradead.org"
<linux-arm-kernel@...ts.infradead.org>,
Andrew Cooper <andrew.cooper3@...rix.com>,
Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
Ralf Baechle <ralf@...ux-mips.org>,
Joe Perches <joe@...ches.com>,
ppc-dev <linuxppc-dev@...ts.ozlabs.org>,
David Miller <davem@...emloft.net>
Subject: Re: [v3,11/41] mips: reuse asm-generic/barrier.h
On Tue, Jan 26, 2016 at 12:10 PM, Paul E. McKenney
<paulmck@...ux.vnet.ibm.com> wrote:
> On Tue, Jan 26, 2016 at 11:44:46AM -0800, Linus Torvalds wrote:
>>
>> > struct foo *x = READ_ONCE(*ptr);
>> > smp_read_barrier_depends();
>> > x->bar = 5;
>>
>> This case is complete BS. Stop perpetuating it. I already removed a
>> number of bogus cases of it, and I removed the incorrect documentation
>> that had this crap.
>
> If I understand your objection correctly, you want the above pattern
> expressed either like this:
>
> struct foo *x = rcu_dereference(*ptr);
> x->bar = 5;
>
> Or like this:
>
> struct foo *x = lockless_dereference(*ptr);
> x->bar = 5;
>
> Or am I missing your point?
You are entirely missing the point.
You might as well just write it as
struct foo x = READ_ONCE(*ptr);
x->bar = 5;
because that "smp_read_barrier_depends()" does NOTHING wrt the second write.
So what I am saying is simple: anybody who writes that
"smp_read_barrier_depends()" in there is just ttoally and completely
WRONG, and the fact that Peter wrote it out after I removed several
instances of that bloody f*cking idiocy is disturbing.
Don't do it. It's BS. It's wrong. Don't make excuses for it.
Linus
Powered by blists - more mailing lists